【问题标题】:catch 401 with angular get request使用角度获取请求捕获 401
【发布时间】:2015-05-21 18:43:28
【问题描述】:

我正在向服务发出 get 请求以检查是否存在某个键 - 如果存在,它会返回一些数据,如果不存在,它会返回 401。我无法控制服务 - 但我可以不想在控制台中显示 401 - 这似乎不专业,因为在大多数情况下,此键不存在。有没有办法捕获 401,使其永远不会打印到控制台?

现在我有以下内容 - 我可以测试状态是否为 401,但我无法捕获它以防止它打印到控制台。这可能吗?我不想在 401 上使用全局处理程序,我只想为这个特定请求捕获一个。

$http.get(url, { withCredentials: true })
        .success(function(data, status, headers, config) {
          result.resolve(data, status, headers, config);
        })
        .error(function(data, status, headers, config) {
          if(status === 401)
          {
            // I can test for a 401 here, but that doesn't seem to help
          }
          result.reject(data);
        });

【问题讨论】:

  • 你不能。错误的请求错误由您的浏览器处理,角度异常处理程序也不会这样做。

标签: angularjs get http-status-code-401


【解决方案1】:

您无法阻止在控制台中打印 ajax 错误。

避免这种情况的一种方法是从服务器返回一个常规的200,其中包含您将作为缺少密钥错误客户端处理的特定内容。

或者你可以在回复之后直接使用console.clear(),但我不知道它是否被所有浏览器支持,它可能不会更“专业”。

【讨论】:

  • 我更改了我的服务器以返回有关身份验证的布尔值。不知道它是否违反 http-protocol,但对于只检查请求中是否有有效会话 id 的路由效果更好。
【解决方案2】:

您在捕捉 401 方面所取得的成就似乎是按照应该完成的方式完成的 [1]。对于控制台登录错误的问题,我不得不说无能为力[2]:至少 Chrome 控制台会自动将 401 事件标记到控制台,而完全不涉及您的代码。 [3] 可以破解某些东西,但只能在您自己的机器和浏览器上。

所以,简而言之是不用担心,我想只有程序员会使用控制台,普通的互联网用户在日常上网时也不会潜入控制台。

来源:

[1]Capture HTTP 401 with Angular.js interceptor

[2]Angular avoid Console trace on $http error

[3]Can I prevent the Chrome Developer Tools console from logging image 404 errors?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-25
    • 2020-07-11
    • 1970-01-01
    • 1970-01-01
    • 2019-03-02
    • 1970-01-01
    • 2010-10-15
    相关资源
    最近更新 更多