同源策略 & 跨域

同源策略

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

同源的定义

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

源的继承

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

源的修改

可以通过设置 document.domain 为当前域或者当前域的父域来修改当前页面的源。
由于设置 document.domain 会导致 port 被重置为 null,所以使用这种方式修改源时,需要在父域和子域中设置 document.domain 为相同的值,否则会由于 port 不相同而无法通过同源检测。

跨域

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

跨域解决方案

  • JSONP
  • CORS
  • 降域
  • postMessage

你可能感兴趣的:(同源策略 & 跨域)