漫谈浏览器“同源策略”

我怕爱的太早我们不能终老 提交于 2019-12-25 13:38:03

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

        所谓“同源策略”就是,www.aaa.com域名下的代码不能向www.bbb.com域发出ajax、cookie请求,不能修改其dom,因为它们域名不同,事实上“协议+域名+端口号”三项中任意一项不同都会被拦截。这是一种浏览器的安全策略,初期刚入行的我对此产生了巨大的困惑:这安全策略到底是保护了谁的安全?是怎么保护的?为什么又有CORS这种官方的绕过“同源策略”的方法?

        现在理解,它是直接保护的浏览页面的终端用户,也就是普通上网的人,间接保护的网站和浏览器自身。这怎么说呢?浏览器就好像一个大型商场,一个个web网站就是商场的常驻店铺,普通上网的人就是逛商场的人。每个网站都含有大量请求,用来返回页面信息、发送、获取数据等,它们就像店铺的店员。

        当在www.aaa.com下出现www.bbb.com的域名请求,就好像店铺A的店里出现了店铺B的店员b,作为知情者很自然就会想:店员b你不在店铺B好好上班来店铺A干什么,非奸即盗吧?浏览器作为“大型商场”就是这个情景中的知情者,它要消除这种隐患,因为如果来自己商场消费的人吃了亏以后就不来了,它不能让消费者吃亏。这是直接保护了消费者,同时因为消费者万一吃亏,他会很直接的认为是店铺和商场骗了他,不再信任二者不再去二者那里消费,所以商场保护消费者的行为也是间接保护了自己和商铺。

        可是浏览器为啥又允许有CORS这种官方方法绕过其“同源策略”呢,不是说“要去除隐患保护消费者”吗? 这就好像,商场发现入驻其内的很多商铺其实是一个老板,比如店铺A和店铺B就是一个老板,之所以商铺B的店员b会出现在店铺A,是因为店铺A的生意火爆,两个店铺共同的老板把他调剂过去帮忙的。 所以商场就搞出一个叫CORS的登记册,跟所有入驻的店铺说,这商场里还有哪些店铺跟你们是一家,就写在这个册子上,以后你们的店员相互串门搞事我就不管了

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!