📜  什么是同源政策 (SOP)?

📅  最后修改于: 2022-05-13 01:57:01.206000             🧑  作者: Mango

什么是同源政策 (SOP)?

同源策略是一种浏览器安全功能,它限制由一个源加载的文档或脚本,以访问或与来自另一个源的文档或脚本交互。源由协议、主机和端口组成。

例如,考虑以下 URL:

在上面的例子中,“https://”是协议,“geeksforgeeks.com”是主机,端口是“80”。

注意:默认情况下,网站使用端口 80。

同源策略是必要的,因为当浏览器从一个源向另一个源发出 HTTP 请求时,所有相关数据(即 cookie、身份验证令牌、会话或任何相关数据)都会作为请求的一部分发送。如果其他来源是恶意的,它将能够访问受害用户的所有信息。

例子:

当两个来源具有相同的协议、主机和端口时,就说它们是相同的。

让我们将来源“https://geeksforgeeks.com”与下表中的来源进行比较。

URLSame Origin?
https://geeksforgeeks.com/example1Yes, same protocol, host and port. Only the URL path differs.
https://geeksforgeeks.com/example/example.html Yes, same protocol, host and port. Only the URL path differs.
http://geeksforgeeks.com/exampleNo,  protocol is different.
https://practice.geeksforgeeks.com/exampleNo, host is different.
http://www.geeksforgeeks.com/exampleNo, host and protocol is different
https://geeksforgeeks.com:81/exampleNo, port is different

注意:Internet Explorer 将允许“https://geeksforgeeks:81/example”,因为 IE 在应用同源策略时不考虑端口号。

同源政策何时实施限制?

当涉及两个不同的来源时,浏览器将应用同源策略。

  • 页面无法访问 iframe 中的内容,除非它们来自同一来源。
  • 不允许使用 XMLHttpRequest。
  • 来自特定站点的会话 Cookie 不能发送到具有不同来源的页面。

注意:如果是 cookie,则不检查协议和端口。仅检查主机。

同源策略并不完全限制两个源之间的交互。浏览器检查两个来源之间的交互是否构成威胁,如果不是,则允许交互。

通常允许跨域加载页面资源。您可以从其他站点嵌入带有 标签的图像、带有