CORS简单也简单,但就是一直没去学习,顺手记录
CORS参考资料:
CORS的概括
CORS
是一个跨域的规范。CORS
要求同时配置好客户端和服务器。客户端主要负责设置符合的请求报头(使用XMLHttpRequest
或fetch
)。服务器也需要返回合适的报头。详见MDN。
注:非https资源在https站点下会被默认拦截
对于img的crossOrgin属性
出现在用canvas
绘制图形的情况中。(以下说法引用自这里,有部分修改)
canvas
使用的image
可以跨域,但是canvas
使用了没有权限的跨域图片后,在使用canvas.toDataURL()
等数据导出函数的时候会报错。(见MDN)
使用img
的crossOrgin
属性可能使浏览器行为符合预期(需要服务器允许)
浏览器对跨域判定
http://chitanda.me/2015/07/04/the-implementation-about-CORS-achieved-by-server-and-broswer/
或 https://segmentfault.com/a/1190000003710973
概括:跨域限制(同源限制)只是浏览器的行为。跨域访问包括:不同协议,不同域名(主域名或子域名),不同端口,域名对应ip。
补充:文章中未提到跨域请求具体分两次发送,浏览器判断跨域是在两次请求之间进行。且第一次预请求只发送头部,服务器也只返回头部,故未获取到数据。(来自segmentfault
中@chiyiw的评论)