首页
学习
活动
专区
圈层
工具
发布
技术百科首页 >前端性能监控 >有不少错误日志是 “Script error. @ (:0:0) 没啥信息” 这种是第三方 JS 异常吗?可以通过配置过滤掉吗?

有不少错误日志是 “Script error. @ (:0:0) 没啥信息” 这种是第三方 JS 异常吗?可以通过配置过滤掉吗?

词条归属:前端性能监控

Script error. 也被称为跨域错误,当网站请求并且执行一个非本域名下的脚本的时候,如果跨域脚本发生错误,就有可能抛出这个错误。由于应用中,我们的脚本都是放在 CDN 上的,因此这种错误最为常见。

其实这并不是一个 JavaScript Bug。但出于安全考虑,浏览器会刻意隐藏其他域的 JS 文件抛出的具体错误信息,这样做可以有效避免敏感信息无意中被不受控制的第三方脚本捕获。因此浏览器只允许同域下的脚本捕获具体错误信息,而其他脚本只知道发生了一个错误,但无法获知错误的具体内容。更多信息,请参见 Webkit 源码

具体解决方式:

解决办法1:CORS

假如您页面所在的域名为 "https://domain.com",CDN 地址为 "https://another-domain.com/app.js",下面为您介绍如何通过配置参数过滤掉 "Script error. @ (:0:0) " 错误信息。

步骤1:资源添加 crossorigin 属性。

代码语言:javascript
复制
<script src="http://another-domain.com/app.js" crossorigin="anonymous"></script>

步骤2:CDN 添加 cors 响应头,这个基本是 cdn 默认的,所以实际上我们并不需要做什么。

代码语言:javascript
复制
Access-Control-Allow-Origin: *
解决办法2: try catch

window.onerror 中只能捕获 Script error.,但是 try catch 中却能打印详细的错误栈。

代码语言:javascript
复制
<!doctype html>
<html>
<body>
    <script src="http://another-domain.com/app.js"></script>
    <script>
        window.onerror = function (message, url, line, column, error) {
            console.log(message, url, line, column, error);
        }
        try {
            foo(); // 调用app.js中定义的foo方法
        } catch (e) {
            console.log(e);
            throw e; // 主动抛出的错误捕获后不是 Script error
        }
    </script>
</body>
</html>

如果不想解决,只想直接屏蔽,可以参考下一个问题,不上报特殊日志。

相关文章
转 前端代码异常日志收集与监控
☞ 收集日志的方法 平时收集日志的手段,可以归类为两个方面,一个是逻辑中的错误判断,为主动判断;一个是利用语言给我们提供的捷径,暴力式获取错误信息,如 try..catch 和 window.onerror。 1. 主动判断 我们在一些运算之后,得到一个期望的结果,然而结果不是我们想要的 // test.js function calc(){ // code... return val; } if(calc() !== "someVal"){ Reporter.send({ positi
jojo
2018-05-03
1.5K0
前端异常监控实践
bug是不可能被全部测试出来的,由于成本和上线档期的考虑,测试无法做到“面面俱到”,即使时间充裕也总会有这样或那样的bug埋藏在某个角落。
用户1687375
2019-07-31
1.6K0
一文详聊前端异常原理
随着近年来前端监控体系建设日益完善,前端工程师对异常更加关注。业界关于 JS 异常介绍大多只谈了异常的捕获方法,对产生的原因和处理办法谈的较少。本文将详细的阐述异常原理,把笔者近 2 年在前端监控领域中与异常打交道的经验分享给大家。
coder_koala
2022-11-28
2.9K0
前端 JavaScript 错误分析实践
在平日的工作中前端 badjs 是一个比较常见的问题, badjs 除了我们自身业务 js 脚本里比较明显的报错外还有依赖其他资源的一些报错,对于自身业务 js 里出现的错误很容易进行定位并修复,但对于依赖资源的错误即常见的 script error (外部 js、接口错误)定位就没那么容易了。
WecTeam
2019-12-16
1.3K0
一篇讲透自研的前端错误监控
在我司线上运行的是近亿级别的广告页面,这样线上如果裸奔,出现了什么问题不知道,后置在业务端发现,被业务方询问,这种场景很尴尬。
ConardLi
2021-10-19
2.2K0
点击加载更多
词条知识树 24个知识点
更多
  • 产品相关问题(5个知识点)
  • 技术排查相关问题(11个知识点)
  • 使用相关问题(8个知识点)
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
领券