为什么会有同源策略 同源策略(Same-Origin Policy)是由Netscape公司在1995年引入的一种重要的安全机制,用于保护用户信息的安全,防止恶意网站窃取数据。同源策略要求,只有当协议、域名和端口号相同时,网页之间才能互相访问资源。 同源策略的作用 防止恶意网站获取本地数据 :如果没有同源策略,不同源的数据和资源(如HTTP头、Cookie、DOM、localStorage等)就能相互随意访问,用户的隐私和安全将无法得到保证。 保护用户的登录状态 :Cookie中通常包含用户的登录状态信息,如果没有同源策略,恶意网站可以通过JavaScript访问其他网站的Cookie,从而冒充用户进行操作。 防止跨站脚本攻击(XSS) :同源策略可以防止恶意网站通过iframe等方式加载其他网站的内容,并获取用户输入的数据。

补充

补充:同源策略(Same-Origin Policy)是浏览器最核心的安全机制之一,由 Netscape 在 1995 年提出,目的是隔离不同来源的文档,防止恶意网站读取其他网站的敏感数据。

判断「同源」的标准:

  • 协议(protocol) 必须相同:http:// vs https:// 视为跨源。
  • 域名(host) 必须相同:a.example.com vs b.example.com 视为跨源。
  • 端口(port) 必须相同:http://example.com:8080 vs :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」等手段。