同源策略是浏览器强制执行的默认安全隔离机制,核心是协议、域名、端口三者完全一致才视为同源,旨在防止恶意脚本窃取用户在银行、邮箱等页面中的敏感数据,其与cors的关系是:sop默认拦截,cors通过服务端响应头提供可控例外。

同源策略是前端安全架构的底层基石,它不是可选的“功能”,而是浏览器强制执行的默认隔离机制。它的核心价值在于:把不同网站的数据和脚本隔开,让恶意页面无法偷看、篡改你正在使用的银行页面、邮箱或社交平台里的内容。
它防的是什么?不是服务器,而是用户侧的数据泄露
同源策略真正保护的对象,是你——正在浏览网页的用户。比如你在 A 网站登录后,浏览器自动携带 Cookie;如果没有同源限制,B 网站的 JavaScript 就能通过 iframe 嵌入 A 页面,再用 JS 读取 DOM 或发起请求,直接拿到你的身份凭证或敏感信息。
- 不能跨源读取 iframe 内容(哪怕只是显示一个登录框)
- 不能用 XMLHttpRequest 或 fetch 读取跨域响应体(发送可以,但拿不到返回数据)
- 不能访问其他源的 localStorage、sessionStorage、Cookie、IndexedDB
它为什么必须严格按三元组判定?
协议、域名、端口任意一项不同,都视为不同源。这不是过度设计,而是堵死所有绕过路径:
PigX UI Pro 前端开发指南 - Vue 3 + TypeScript + Element Plus。当用户提到 PigX UI、PigX 前端、lgb-mgui 项目、Vue 3 企业级后台开发、Element Plus 后台开发时使用此技能。
- http://a.com 和 https://a.com —— 协议不同,不互通(防止中间人劫持后降级窃取)
- a.com 和 www.a.com —— 域名不同(子域名也算不同源),避免子域被攻陷后波及主站
- a.com:80 和 a.com:3000 —— 端口不同,区分开发环境与生产服务,防止本地调试代码误触线上数据
它和 CORS 是什么关系?
CORS 不是打破同源策略,而是在它的框架内提供可控的例外。浏览器仍先执行 SOP 拦截,再根据服务器返回的 Access-Control-Allow-Origin 等响应头决定是否放行。换句话说:
- SOP 是默认关门
- CORS 是门上加了一把由服务端配钥匙的锁
- 钥匙没给,门就打不开;钥匙给了,才允许特定来源进来
它如何支撑更上层的安全机制?
CSRF 防护依赖它——因为浏览器自动携带 Cookie 的行为不受 SOP 限制,但 JS 无法读取响应,所以攻击者即使诱导你点击链接发请求,也无法得知结果或窃取 token;XSS 攻击的破坏范围也被 SOP 限制在当前源内,无法跨站读取其他 Tab 中的银行页面数据;CSP(内容安全策略)等机制也以“源”为基本单位做资源加载控制。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










