js img标签解决跨域entity
时间: 2023-10-22 12:08:14 浏览: 92
js跨域解决方案
在使用 JavaScript 中的 `<img>` 标签加载跨域图片时,可能会遇到 "entity at 'url' failed to load" 的错误。这是因为浏览器在加载跨域图片时会应用同源策略,防止从其他域加载恶意代码。
为了解决这个问题,可以使用 `XMLHttpRequest` 对象来加载图片,并将其转换为 base64 编码的数据 URI。代码示例如下:
```javascript
var xhr = new XMLHttpRequest();
xhr.onload = function() {
var reader = new FileReader();
reader.onloadend = function() {
var base64data = reader.result;
var img = document.createElement("img");
img.src = base64data;
document.body.appendChild(img);
}
reader.readAsDataURL(xhr.response);
};
xhr.open("GET", "https://example.com/image.jpg");
xhr.responseType = "blob";
xhr.send();
```
这段代码会向 `https://example.com/image.jpg` 发送一个 GET 请求,并将响应类型设置为 blob。然后使用 `FileReader` 将响应数据转换为 base64 编码的数据 URI,并将其设置为 `<img>` 标签的 `src` 属性。这样就可以避免跨域加载图片时的 "entity at 'url' failed to load" 错误。
阅读全文