同源策略
为保护用户信息安全,防止恶意网站窃取用户数据,浏览器限制本域中的脚本只能访问本域中的资源,这就是同源策略。
同源的定义
如果两个 URL 的 protocol
、host
、port
三者都相同的话,则这两个 URL 是同源,即属于同一个域。
源的继承
在页面中通过 about:blank
或 javascript: URL
执行的脚本会继承打开该 URL 的文档的源,因为这些类型的 URL 没有包含源服务器的相关信息。
源的修改
可以通过设置 document.domain
为当前域或者当前域的父域来修改当前页面的源。
由于设置 document.domain
会导致 port
被重置为 null
,所以使用这种方式修改源时,需要在父域和子域中设置 document.domain
为相同的值,否则会由于 port
不相同而无法通过同源检测。
跨域
请求与当前域非同源的域中的资源即为跨域。