为什么会有同源策略 同源策略(Same-Origin Policy)是由Netscape公司在1995年引入的一种重要的安全机制,用于保护用户信息的安全,防止恶意网站窃取数据。同源策略要求,只有当协议、域名和端口号相同时,网页之间才能互相访问资源。 同源策略的作用 防止恶意网站获取本地数据 :如果没有同源策略,不同源的数据和资源(如HTTP头、Cookie、DOM、localStorage等)就能相互随意访问,用户的隐私和安全将无法得到保证。 保护用户的登录状态 :Cookie中通常包含用户的登录状态信息,如果没有同源策略,恶意网站可以通过JavaScript访问其他网站的Cookie,从而冒充用户进行操作。 防止跨站脚本攻击(XSS) :同源策略可以防止恶意网站通过iframe等方式加载其他网站的内容,并获取用户输入的数据。
补充
补充:同源策略(Same-Origin Policy)是浏览器最核心的安全机制之一,由 Netscape 在 1995 年提出,目的是隔离不同来源的文档,防止恶意网站读取其他网站的敏感数据。
判断「同源」的标准:
- 协议(protocol) 必须相同:
http://vshttps://视为跨源。 - 域名(host) 必须相同:
a.example.comvsb.example.com视为跨源。 - 端口(port) 必须相同:
http://example.com:8080vs:80视为跨源。
同源策略限制:
- DOM 访问:不同源的页面无法互相读取 DOM(iframe 受限)。
- Cookie / LocalStorage / IndexedDB:不同源之间不共享。
- AJAX / fetch:受 CORS 管控,未授权的跨源请求会被浏览器拦截。
- Web 字体、Canvas 图像像素等也受限制。
例外情况:
<script>、<link>、<img>、<video>、<audio>等标签默认允许跨源加载资源(被同源策略豁免)。<form>提交可以跨源(POST 后跳转)。window.postMessage提供跨源消息通信机制。
补充:现代跨源通信主要靠「CORS 响应头 + JSONP + Nginx 反代 + WebSocket」等手段。



