网工干货知识

超全学习笔记
当前位置:首页 > 干货知识

什么是“同源策略”(Same Origin Policy, SOP)?

更新时间:2026年03月27日   作者:spoto   标签(Tag):

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

例如,请考虑以下URL:

https://spoto.net/

在上面的例子中,“https://”表示协议;“spoto.net”表示主机,而端口号为“80”。

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

同源策略是必要的,因为当浏览器从一个源向另一个源发送HTTP请求时,所有相关的数据,比如Cookie、认证令牌、会话信息等,都会作为请求的一部分被发送出去。如果另一个源具有恶意行为,那么它就可以获取受害用户的所有信息。

示例:

如果不存在同源策略的话,那么当你访问一个恶意网站时,该网站就可以读取你社交网络账户中的所有信息了。

据说,当两个源地址的协议、主机和端口都相同时,它们其实属于同一个来源。

让我们把“https://spoto.net/”这个网址的来源与下表中列出的其他网址来源进行比较吧。

URL相同的来源吗?
https://spoto.net/example1是的,协议、主机和端口都是相同的。唯一不同的是URL的路径有所不同而已。
https://spoto.net/example/example.html是的,协议、主机和端口都是相同的。唯一不同的是URL的路径有所不同而已。
http://spoto.net/example不,两种协议的运作方式是不同的。
https://practice.spoto.net/example不,主机是不同的。
http://www.spoto.net/example不,主机和协议是不同的。
https://spoto.net/:81/示例不,端口是不同的。

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

当“同源策略”实施限制时,会怎样呢?

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

  • 来自iframe中的内容,除非它们来自相同的源,否则无法被页面访问到。
  • 不允许使用 XMLHttpRequests。
  • 来自某个特定网站的会话Cookie无法被发送到具有不同源头的页面上。

注意:如果未勾选“Cookie”选项,那么协议和端口信息将不会被检查。此时,只会检查主机信息。

“同源策略”并不会完全限制两个源地址之间的交互。浏览器会检查这两个源地址之间的交互是否构成威胁,如果不构成威胁的话,那么浏览器就会允许这种交互发生。

通常,跨源加载页面资源是被允许的。你可以使用`<image>`标签来嵌入图片,使用`<script>`标签来嵌入脚本,或者使用`<video>`标签来嵌入视频。不过,任何JavaScript代码都无法读取这些跨源嵌入元素中的内容。

“同源策略”就够了吗?

同源策略确实能增强安全性,但仅仅依靠它来防止各种攻击是不够的。其中一些攻击方式包括:

  • 跨站请求伪造攻击(CSRF)本质上利用了不同的来源。因此,除了同源策略之外,还需要使用防CSRF令牌来防止这种攻击。
  • 跨站脚本攻击也可以通过同源策略来预防。不过,为了有效防止这种攻击,就需要限制来自外部来源的脚本的加载,因为这可能会破坏Web应用程序的功能。
              马上抢免费试听资格
意向课程:*必选
姓名:*必填
联系方式:*必填
QQ:
思博SPOTO在线咨询

相关资讯

即刻预约

免费试听-咨询课程-获取免费资料