为何带access-control-allow-origin: undefined的跨域GET请求未被同源策略拦截?
为什么跨域GIF请求没被同源策略拦截?
- 同源策略不是一刀切限制所有跨域请求,它主要管控脚本主动发起的跨域请求(比如fetch、XMLHttpRequest这类),防止脚本随意读取其他网站的响应数据。但对于浏览器直接嵌入的资源(像图片、CSS、JS、字体这类),规则完全不同。
- 你请求的是
.gif图片,属于浏览器允许直接嵌入的资源类型。这类资源的加载过程不需要符合CORS的Access-Control-Allow-Origin规则——只要服务器能正常返回资源,浏览器就会下载并渲染它,不会因为跨域或者响应头里的Access-Control-Allow-Origin是undefined就拦截。 - 只有当你用脚本去读取这个跨域GIF的内容时(比如把它画到canvas里后调用
getImageData,或者用fetch请求后想解析响应体),浏览器才会检查CORS响应头。这时候如果Access-Control-Allow-Origin不匹配当前域名,才会触发跨域错误。
内容的提问来源于stack exchange,提问作者David Klempfner
相关产品推荐
相关产品推荐

