什么是同源政策 (SOP)?
同源策略是一种浏览器安全功能,它限制由一个源加载的文档或脚本,以访问或与来自另一个源的文档或脚本交互。源由协议、主机和端口组成。
例如,考虑以下 URL:
https://geeksforgeeks.com
在上面的例子中,“https://”是协议,“geeksforgeeks.com”是主机,端口是“80”。
注意:默认情况下,网站使用端口 80。
同源策略是必要的,因为当浏览器从一个源向另一个源发出 HTTP 请求时,所有相关数据(即 cookie、身份验证令牌、会话或任何相关数据)都会作为请求的一部分发送。如果其他来源是恶意的,它将能够访问受害用户的所有信息。
例子:
If there was no Same Origin Policy in place and you visit a malicious website it would be able to read all messages from your social networking account.
当两个来源具有相同的协议、主机和端口时,就说它们是相同的。
让我们将来源“https://geeksforgeeks.com”与下表中的来源进行比较。URL Same Origin? https://geeksforgeeks.com/example1 Yes, 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/example No, protocol is different. https://practice.geeksforgeeks.com/example No, host is different. http://www.geeksforgeeks.com/example No, host and protocol is different https://geeksforgeeks.com:81/example No, port is different
注意:Internet Explorer 将允许“https://geeksforgeeks:81/example”,因为 IE 在应用同源策略时不考虑端口号。
同源政策何时实施限制?
当涉及两个不同的来源时,浏览器将应用同源策略。
- 页面无法访问 iframe 中的内容,除非它们来自同一来源。
- 不允许使用 XMLHttpRequest。
- 来自特定站点的会话 Cookie 不能发送到具有不同来源的页面。
注意:如果是 cookie,则不检查协议和端口。仅检查主机。
同源策略并不完全限制两个源之间的交互。浏览器检查两个来源之间的交互是否构成威胁,如果不是,则允许交互。
通常允许跨域加载页面资源。您可以从其他站点嵌入带有