为什么当我们有 img 标签时我们没有遇到 access-control-allow-origin 问题
src=urlOf differentDomain
元素引用不同的域
类似案例:1
<img src="urlOfdifferentDomain" />
但是当我们执行情况 2 时,我们会得到同样的错误
//creating image element
a=new Image();
// image on load function
a.onload=function(){
}
// assigning src function
a.src=urlOfdifferentDomain
我只是想知道这两种方法有什么区别。 我还将网络服务器中的 csp img-src 分配给 self,然后在情况 1 中从不同域加载图像
最佳答案
情况1是可以的,因为在HTML中使用图像不会将资源(来自其他域)暴露给JavaScript,因此不会引起安全问题。
情况 2 会报错,因为使用 Image
对象确实会给 Canvas 编辑等某些操作带来安全风险,因为它会将其他域的资源暴露给 JavaScript。
更新:此错误是由浏览器安全检查引起的。 Web 服务器不知道请求是来自 html 标签还是来自 javascript 调用,但无论如何都会返回资源——您可以检查浏览器中的网络调试面板,看到资源已下载,状态为 200。资源被下载并暴露给 JavaScript 操作。浏览器会检查该资源的JavaScript操作是否存在漏洞。如果是,如果服务器没有启用CORS,会报Access-Control-Allow-Origin错误。
关于javascript - 图像加载上的访问控制允许来源问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44737541/