如何解决前端监控上报 Script Error?
当前位置:点晴教程→知识管理交流
→『 技术文档交流 』
前言在微前端和多国业务的场景下,我们经常会遇到 HTML 页面域名和静态资源域名不统一的情况。这种架构虽然带来了部署和 CDN 优化的便利,但也引入了一个常见的问题:跨域 Script Error。本文将详细介绍这个问题的原因、影响,以及一套完整的解决方案。 问题背景:业务场景我们的项目是一个多国业务的前端应用,采用了以下架构:
问题表现在这种架构下,我们遇到了以下问题: 1.监控上报的 JS 错误全部显示为 "Script Error"
2.错误信息丢失
问题原因分析1. 浏览器的同源策略当脚本从不同源加载时,浏览器会应用
2. 缺少 CORS 配置要获取跨域脚本的详细错误信息,需要满足两个条件:
如果该标签没有 只有当 与此同时,服务器/CDN 响应也必须包含正确的 CORS 相关头部,如 这是因为浏览器在跨域加载资源时,会先根据标签属性判断是否允许访问细节,再检查服务器是不是“回应放行”了该跨域请求。如果服务器未设置这些头部,哪怕你加了 如果缺少其中任何一个,浏览器都会隐藏错误详情。 3. Webpack/Rspack 动态加载机制现代前端构建工具(Webpack、Rspack)在实现代码分割和懒加载时,会通过 如果这些动态创建的标签没有 解决方案我们采用了一套三层防护的解决方案: 方案架构图
HTML层:模板引用资源手动修改对于 HTML 模板中直接引用的静态资源,我们手动添加 打包工具层:Webpack/Rspack 插件自动处理(构建时)对于构建工具自动插入的脚本和样式,我们创建了一个自定义插件: 异步加载层:运行时全局拦截(动态加载)在业务开发中我们会遇到许多异步动态加载的脚本文件,通过拦截
Webpack/Rspack 在运行时加载 chunk 时,会生成类似这样的代码: 通过拦截
服务器端配置后端需确保 CDN/stastic 资源的 HTTP 响应头允许跨源: Nginx 配置样例(脱敏)
总结通过这套三层防护的解决方案,我们成功解决了多域名架构下的跨域 Script Error 问题:
参考文章:原文链接 该文章在 2026/2/6 15:45:22 编辑过 |
关键字查询
相关文章
正在查询... |