同源策略 & 跨域

同源策略

为保护用户信息安全,防止恶意网站窃取用户数据,浏览器限制本域中的脚本只能访问本域中的资源,这就是同源策略。javascript

同源的定义

若是两个 URL 的 protocolhostport 三者都相同的话,则这两个 URL 是同源,即属于同一个域。java

源的继承

在页面中经过 about:blankjavascript: URL 执行的脚本会继承打开该 URL 的文档的源,由于这些类型的 URL 没有包含源服务器的相关信息。跨域

源的修改

能够经过设置 document.domain 为当前域或者当前域的父域来修改当前页面的源。 因为设置 document.domain 会致使 port 被重置为 null,因此使用这种方式修改源时,须要在父域和子域中设置 document.domain 为相同的值,不然会因为 port 不相同而没法经过同源检测。浏览器

跨域

请求与当前域非同源的域中的资源即为跨域。安全

跨域解决方案