防止在浏览器控制台中记录http错误

时间:2014-03-01 10:44:22

标签: angularjs

我正在试图弄清楚如何在我的应用中抑制http请求和响应错误,例如,当我的服务器发出错误请求时,我不希望将错误记录到浏览器控制台中。我已经尝试覆盖$exceptionHandler,但该逻辑适用于除HTTP错误之外的所有异常,这些异常仍记录到浏览器中。我还创建了HTTP拦截器,但是在我放入400 Bad Request的逻辑之前出现了全局responseError错误:

'responseError': function (rejection) {
 console.log(rejection);
 return $q.reject();
}

这也没有抑制错误,任何想法?

修改

我得到的错误是这样的: POST http://localhost:38349/token 400 (Bad Request) enter image description here

2 个答案:

答案 0 :(得分:13)

实际上Angular不会记录这个。

这是执行该操作的XMLHttpRequest对象(与JQuery相同的问题here)。我从Angular中提取了逻辑并制作了a working standalone example

var method = 'POST';
var url404 = '/tnseiartneiasrt/arsntiearsntiasrntiarnstsie';

var xhr = new window.XMLHttpRequest();
xhr.open(method, url404, true);
xhr.onreadystatechange = function() {
  if (xhr && xhr.readyState == 4) {
    console.log('should have logged an error already :(');
  }
};
xhr.send(null);

正如您所看到的,它是记录它的xhr对象。可能有一种方法可以在触发xhr请求之前禁用所有console.log,但我认为这样做更好

  • 重新设计错误流程以返回状态代码200,其中包含正文中的内部错误代码
  • 使用控制台日志记录(普通用户甚至不知道控制台)

我选择了第二个选项,因为我觉得它更容易理解,因为当有人读取你的代码时它不需要额外的逻辑。

希望这会有所帮助:)

答案 1 :(得分:3)

您的浏览器决定将错误请求记录到日志中,这是正确的做法。如果您不希望不提出该请求或从您的网络服务器发送其他响应代码。