1. 什么是CORS
CORS是一个W3C标准,全称是"跨域资源共享"(Cross-origin resource sharing),这个标准规定了浏览器如何向跨源服务器获取资源
2. 同源策略
SOP(同源策略,Same-Origin-Policy)规定浏览器禁止页面加载或执行与自身来源不同的域的任何脚本。如果没有同源策略,便可能出现以下情景的安全问题:
情景一
用户在一个登录了网站A,浏览器保存着网站A的cookie,此时用户B又登陆了恶意网站B,网站B在暗自向网站A发起了请求,并带上了网站A的cookie,如果没有同源策略限制,此时网站B便暗自登录上了用户在网站A的账号
情景二
网站B使用了一个iframe,获得网站A的DOM:
<iframe src="www.site-a.com"></iframe>
,得到了这个网站A的DOM之后,用户在这个DOM内的操作都可以被获取到,如输入的账户密码等
出于安全考虑,浏览器采用了同源策略作为一种安全机制。同源策略中,如果两个url“协议、域名、端口”一致,则认为是同源,若是非同源,则有以下限制:
- 存储在浏览器中的数据,如localStroage、Cookie等不能通过脚本跨域访问
- 不能通过脚本操作不同域下的DOM
- 不能通过ajax请求不同域的数据
3. CORS
未有高见,可参考以下三篇文章:
什么是跨域?一次性带你理解透
浏览器同源政策及其规避方法
跨域资源共享 CORS 详解
P.S 私以为文章是作者思想的“编译结果”,引用别人的文章如同将别人做得好的东西import到自己工程,从工程的角度讲无疑可以减少重复,然而思想又不是工程,不能像插件一样随插随用。不过细想之,import之所以可以将减少工作量,是因为作者只关注当前工程,不必关心import部分,但是实际运行时,还是得劳烦解释器之类去加载。当我们去思考一个问题时,如果要用到别人的思想,那还是自己去加载一下,所费的力气还是没有减少的:P
网友评论