https://developer.mozilla.org/zh-CN/docs/Web/Security/Same-origin_policy

同源策略是一个重要的安全策略,它用于限制一个origin的文档或者它加载的脚本如何能与另一个源的资源进行交互。它能帮助阻隔恶意文档,减少可能被攻击的媒介

同源:如果两个 URL 的 protocolport (en-US) (如果有指定的话) 和 host 都相同的话,则这两个 URL 是同源。这个方案也被称为“协议/主机/端口元组”,或者直接是 “元组”。(“元组” 是指一组项目构成的整体,双重/三重/四重/五重/等的通用形式)。

源的继承:

在页面中通过

about:blank
javascript:
URL 执行的脚本会继承打开该 URL 的文档的源,因为这些类型的 URLs 没有包含源服务器的相关信息。

允许跨域访源:

可以使用 CORS 来允许跨源访问。CORS 是 HTTP 的一部分,它允许服务端来指定哪些主机可以从这个服务端加载资源。

阻止跨源访问:

  • 阻止跨源写操作,只要检测请求中的一个不可推测的标记 (CSRF token) 即可,这个标记被称为 Cross-Site Request Forgery (CSRF) 标记。你必须使用这个标记来阻止页面的跨源读操作。
  • 阻止资源的跨源读取,需要保证该资源是不可嵌入的。阻止嵌入行为是必须的,因为嵌入资源通常向其暴露信息。
  • 阻止跨源嵌入,需要确保你的资源不能通过以上列出的可嵌入资源格式使用。浏览器可能不会遵守
    Content-Type
    头部定义的类型。例如,如果您在 HTML 文档中指定
    <script>
    标记,则浏览器将尝试将标签内部的 HTML 解析为 JavaScript。 当您的资源不是您网站的入口点时,您还可以使用 CSRF 令牌来防止嵌入。

跨源脚本api访问:

JavaScript 的 API 中,如 iframe.contentWindow (en-US)

window.parent
window.open
window.opener
允许文档间直接相互引用。当两个文档的源不同时,这些引用方式将对 WindowLocation对象的访问添加限制,如下两节所述。

为了能让不同源中文档进行交流,可以使用

window.postMessage

规范: HTML Living Standard § Cross-origin objects