【推荐】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的登记册,跟所有入驻的店铺说,这商场里还有哪些店铺跟你们是一家,就写在这个册子上,以后你们的店员相互串门搞事我就不管了
来源:oschina
链接:https://my.oschina.net/710409599/blog/3147140