标签的crossorigin属性完全不影响脚本错误捕获;真正需加crossorigin的是script标签,并配服务端access-control-allow-origin响应头,且动态chunk需在webpack/vite中配置crossoriginloading或crossorigin。

Link标签加crossorigin对CDN脚本报错没用
直接说结论:<link> 标签的 crossorigin 属性**完全不影响脚本错误捕获**。它只在 rel="stylesheet" 或 rel="preload" as="font" 等少数场景生效,跟 JS 错误堆栈无关。你看到 CDN 的 <link> 示例里带 crossorigin,那是在加载字体或 CSS,不是为了捕获 JS 报错。
真正该加crossorigin的是script标签,且必须配服务端响应头
跨域 JS 报错只显示 "Script error." 的根本原因,是浏览器安全策略屏蔽了跨域脚本的错误细节。要拿到完整堆栈,两个条件缺一不可:
-
<script src="https://cdn.example.com/app.js" crossorigin="anonymous"></script>—— 必须显式写值,不能只写crossorigin - CDN 服务端响应中必须包含
Access-Control-Allow-Origin: https://your-site.com(精确匹配)或Access-Control-Allow-Origin: * - 如果用了
crossorigin="use-credentials",服务端还必须返回Access-Control-Allow-Credentials: true,且Access-Control-Allow-Origin不能是*
Webpack/Vite 构建的动态 chunk 容易漏配 crossOriginLoading
静态 <script></script> 标签好改,但现代项目里大量 JS 是通过 import() 动态加载的。这些 chunk 默认不带 crossorigin,部署到 CDN 后照样报 "Script error.":
- Webpack:在
webpack.config.js的output中设crossOriginLoading: 'anonymous' - Vite:在
vite.config.ts的build.rollupOptions.output中设crossOrigin: 'anonymous' - 没配的话,即使 HTML 里
<script></script>加了crossorigin,动态加载的 JS 依然无法上报真实错误位置
本地 file:// 协议下 crossOriginLoading 完全失效
双击打开 HTML 文件时,crossorigin 被浏览器忽略,无论服务端怎么配都白搭。错误永远是 "Script error." —— 这不是配置问题,是协议限制。调试时必须起本地服务器(如 npx serve、vite preview 或 http-server),走 http://localhost 才能验证是否生效。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











