同源策略(SOP)Same-origin policy
什么是同源策略?
同源策略是一种Web浏览器安全性机制,旨在防止网站相互攻击。
同源策略限制一个起源上的脚本访问另一个起源的数据。源由URI方案,域和端口号组成。例如,考虑以下URL:
http://normal-website.com/example/example.html
网址已访问 允许访问? http://normal-website.com/example/ 是:相同的协议,域和端口 http://normal-website.com/example2/ 是:相同的协议,域和端口 https://normal-website.com/example/ 否:不同的协议和端口 http://en.normal-website.com/example/ 否:其他域 http://www.normal-website.com/example/ 否:其他域 http://normal-website.com:8080/example/ 否:不同的端口*
为什么必须采用同源策略?
同源策略如何实施?
同源策略通常控制JavaScript代码对跨域加载的内容的访问。通常允许页面资源的跨域加载。例如,SOP允许通过<img>标签嵌入图像,通过标签嵌入媒体,并且<video>标签包含JavaScript <script>。但是,尽管这些外部资源可以由页面加载,但是页面上的任何JavaScript都无法读取这些资源的内容。
同源策略有多种例外情况:
-
有些对象是可写的,但跨域却不可读,例如iframe或新窗口中的location对象或location.href属性。 某些对象是可读但不可写的跨域对象,例如对象的length属性window(存储页面上正在使用的帧数)和closed属性。 该replace函数通常可以称为location对象上的跨域。 你可以跨域调用某些函数。例如,你可以调用的功能close,blur并focus在一个新的窗口。postMessage也可以在iframe和新窗口上调用该函数,以便将消息从一个域发送到另一个域。
可以使用放宽同源策略document.domain。此特殊属性允许您放宽特定域的SOP,但前提是它是FQDN(完全限定域名,fully qualified domain name)的一部分。例如,您可能有一个域,marketing.example.com并且想在上读取该域的内容example.com。为此,两个域都需要设置document.domain为example.com。然后,SOP将允许两个域之间的访问,尽管它们起源不同。过去,可以将document.domainTLD设置为com,例如,允许在同一TLD上的任何域之间进行访问,但是现在现代浏览器阻止这种情况。
上一篇:
IDEA上Java项目控制台中文乱码