跨域限制源于浏览器的同源策略,旨在防止恶意网站窃取用户敏感数据;该策略要求协议、域名、端口三者完全一致才允许脚本读取响应、访问DOM或存储数据。

浏览器产生跨域访问限制,根本原因是为了保护用户安全,防止恶意网站窃取敏感数据。这个限制不是 JavaScript 本身的问题,而是浏览器强制执行的 同源策略(Same-Origin Policy)。
同源策略规定:只有当两个 URL 的 协议(http/https)、域名(包括子域名)、端口 三者完全一致时,才被视为“同源”。只要其中任意一项不同,浏览器就判定为跨域,并对某些操作施加限制。
具体限制包括:
- 前端脚本无法读取跨域响应内容(如
fetch或XMLHttpRequest的response.body) - 无法获取跨域 iframe 的 DOM 或 JS 变量
- 不能读写其他源的 Cookie、LocalStorage、IndexedDB
- 表单提交虽能发出,但 JS 无法拿到返回结果
举个典型风险场景:
你刚在网银页面(https://bank.com)登录,浏览器存了带身份信息的 Cookie;
接着你无意中打开了钓鱼网站(https://evil.com),它用 JS 发起一个请求到 bank.com/api/transfer;
如果没有同源策略,这个请求可能携带你的 Cookie 自动执行转账——而你完全不知情。
所以,跨域限制本质是浏览器的一道“安全闸门”,它不阻止请求发出(服务器可能已收到并处理),而是阻止前端脚本读取非同源响应,从而切断数据泄露路径。
这不是缺陷,而是设计使然。所有现代浏览器(Chrome、Firefox、Safari、Edge)都默认启用该策略,且无法被前端代码绕过。











