javascript - 图像加载上的访问控制允许来源问题

标签 javascript cors cross-domain same-origin-policy

为什么当我们有 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/

相关文章:

javascript - 如何设置与 Heroku 子域相同的域 cookie?

google-cloud-platform - 如何使用 Google Cloud Storage 在 CORS json 文件中设置多个来源?

html - 浏览器 Canvas CORS 支持跨域加载图像操作

javascript - 两个站点上的 SECURITY_ERR : DOM Exception 18 when applying document. 域。我该如何解决这个问题?

jquery - Firefox 中出现无效标签错误

asp.net - 无法在 ASP.Net Core Web api 中启用 CORS

javascript - 当我的文本框的文本值使用 jquery 更改时,如何调用函数?

javascript - ReactJS - 有关动态路由的问题

javascript - 我是否适本地使用了 Javascript 回调(面向对象的风格)?

javascript - 为什么此代码在 Safari 中有效,但在 Chrome 中无效?啊啊