同源:
- 协议相同
- 域名相同
- 端口相同
本域脚本只能读写本域内的资源,无法访问其他域的资源。
现代浏览器在安全性和可用性之间选择了一个平衡点,在遵循同源策略的基础上,选择性的未同源策略”开放了后门“。img、script、style等标签,都允许跨域引用资源,严格说这都是不符合同源要求的。然而,也只是引用而已,并不能读取这些资源的内容。这些带有“src”属性的标签每次加载的时候,实际上是由浏览器发起的一个get请求。
浏览器的同源策略,限制了来自不同源的document或脚本,对当前document读取或设置某些属性。
需要注意的是,对于当前页面来说,页面存放JavaScript文件的域并不重要,重要的是加载JavaScript的页面所在的域是什么,例如:
a.com通过以下代码
<script src=http://b.com/b.js></script>
加载了b.com页面上的b.js,但是b.js是运行在a.com页面上的,因此对于当前打开的a.com页面来说,b.js的源应该是a.com而不是b.com。