同源策略(Same-origin policy)是一种在web应用中重要的安全策略。它用于限制一个源(origin)的文档或者它加载的脚本如何与来自另一个源的资源进行交互。这是一个用于隔离潜在恶意文件的重要安全机制。
"同源"的定义是"协议 + 域名 + 端口"三者相同,只要不完全相同,就算是不同源。这里需要注意的是,"源"是以域名为基础的,而不是以IP地址为基础的。
同源策略限制以下几种行为:
- Cookie、LocalStorage 和 IndexDB 无法读取:一个页面设置的 Cookie、LocalStorage 和 IndexDB,在不同源的页面是无法读取到的。
- DOM 无法获得:不同源的页面无法获取到 DOM。比如,父窗口生成一个 iframe,父窗口和 iframe 不同源,那么父窗口是无法读取 iframe 的 DOM。
- AJAX 请求不能发送:不同源的 AJAX 请求是不能发送的。但是,现代浏览器中,可以使用CORS(跨源资源共享)策略来解决这个问题。
尽管同源策略会带来一些限制,但它是一个非常重要的安全机制,可以有效防止 CSRF(跨站请求伪造)攻击等一系列安全问题。