同源策略是浏览器核心安全机制,主要限制跨源资源的交互访问,核心是隔离不同源的文档/脚本,防止恶意攻击。一、同源的定义(必须同时满足)1. 协议相同:如均为`http`或`https`,协议不同则非同源(如`http://example.com`与`https://example.com`)。2. 域名相同:包含子域名(如`example.com`与`sub.example.com`非同源)。3. 端口相同:若指定端口需一致(如`80`端口`http`与`8080`端口`http`非同源)。二、核心限制内容1. 禁止跨源读取操作• 无法通过JavaScript读取跨源`iframe`的DOM结构。• 无法访问跨源网站的`Cookie`、`LocalStorage`、`IndexDB`等存储数据。• 普通`AJAX`请求(如`XMLHttpRequest`)默认被阻止跨源请求(除非目标服务器配置CORS)。2. 允许嵌入但限制交互• 允许嵌入跨源资源(如图片、视频、CSS、脚本),但禁止读取其数据(如用JS获取跨源图片的二进制内容)。• 跨源表单可提交数据,但无法读取响应内容(除非目标服务器允许)。三、例外场景(部分浏览器支持)1. 部分跨域资源共享(CORS)场景:若目标服务器通过`Access-Control-Allow-Origin`等响应头允许,可突破限制。2. 特定API(如`postMessage`)可实现跨源通信,但需显式配置安全验证。四、安全意义防止恶意网站通过跨源访问窃取用户敏感数据(如银行账户信息),或利用跨站脚本(XSS)攻击操纵其他网站的DOM结构。