为什么要提出同源策略?
先看个例子,www.a.com/a_account.html页面显示的是a的账单,然后b在www.b.com上运行一段javascript脚本,结果把a的账单给修改了。这样的事情允许发生吗?
显然,这是不允许。这就是同源策略的限制。
同源策略:限制来自不同源的“document”或脚本,对当前“document”读取或者设置某些属性。说白了,就是不能跨域操作。
那如何确定同不同源呢?只有协议,host(域名或ip),子域名(二级域名),端口都一样才能判定为同源。
但需要注意的是,对于一段“document”或脚本,我们关心的是它们所处哪里,而不是来自于哪里。
举个例子,a.com/a.html中有如下这段代码:
<script src="b.com/b.js"></script>
该代码加载了不同域b.com下的一个js脚本(是通过get请求得到的),因为b.js已经加载到a.html页面上,因此,此时b.js的源是a.com,而不是b.com。也就是说,b.js不管来自哪里,现在所处在a.html 页面上,那么,源就是a.com。其实,这就是Xss攻击所做的事。