老师,请问为何浏览器要限制ajax跨域,服务端设置一下CORS过滤器就可以,逻辑是什么?
来源:5-4 Cookies安全策略

bestming
2019-10-13
不太清楚为何要浏览器要限制服务器AJAX跨域,是为了保护什么?
写回答
1回答
-
TooooBug
2019-11-13
这个在课程中其实应该也有涉及,但可能没有明确单独拿出来说。浏览器端的同源策略的理解很重要。
首先,如果不限制跨域会发生什么。
当你访问我的网站时,我ajax一下网银的接口看一下你的余额?或者我直接ajax一个转账?
那么作为银行网站,我当然是不愿意接口被这样跨域使用的。所以在浏览器的同源策略限制下,银行网站有了选择。我不加CORS你就没有办法跨域发起请求。而加不加CORS是银行网站说了算。这是个主动权的问题。如果没有这个策略的限制,银行网站没有主动权,没得选呀,只能再加上防止CSRF的很多手段来防御。
再说同源策略是谁限制的?是浏览器,也就是说如果你用个其他的HTTP客户端,或者自己写个什么程序,或者自己写个浏览器,可以很容易绕过这个限制。
既然如此容易被绕过,为什么还要有呢?因为要防止“搞别人”,大多数用户是使用符合web标准的浏览器的,而不是使用你编写的程序/浏览器。这一点使得“坏人”没有办法去“搞别人”,不管你自己写代码还是用自己的浏览器,那都是“搞自己”。如果你要搞别人,那就需要别人安装你的程序或者浏览器,这时候事情的性质就已经是木马病毒了,跟浏览器关系不大了。
00
相似问题