摆脱浏览器控制台中的401(未经授权)ajax错误

Fab*_*bio 11 browser jquery http http-status-code-401

我正在使用jQuery.ajax调用通过javascript调用api .如果用户未经过身份验证,api会回复401,我只想忽略此错误.

我已经尝试了jQuery选项中描述的所有回调选项,但错误仍然在浏览器控制台中弹出(在Firefox和Chrome中).

以下是触发错误的示例代码:

$.ajax({
    type: 'GET',
    url: '/url-with-auth',
    dataType: 'json',
    statusCode: {
        401: function (error) {
            // simply ignore this error
            console.log(error);
        }
    },
    complete: logall,
    error: function () {
        // simply ignore this error
        console.log(error);
    },
    async: false
}).fail(function () {
        // ignore the error and do nothing else
        console.log("$.get failed!");
    });
Run Code Online (Sandbox Code Playgroud)

这也具有在由.htaccess文件保护的登台机上再次请求用户凭证的副作用,因为浏览器认为用户未被认证,因此在以下请求中用户需要重新输入他的http凭证.

有没有办法完全忽略这个错误?

编辑

目前我有一个完全缓存应用程序端的HTML模板,我想出于性能原因保留此行为.布局中唯一更改的部分是当前用户的登录信息,因此我使用默认标记呈现(缓存)页面,未登录用户,然后使用jQuery我将标记的相关元素替换为ajax调用返回的登录信息.因此,如果用户未登录且ajax端点返回401我不需要任何内容​​,则标记应保持不变.

一切都在这个时刻工作,唯一的丑陋的事情是我在控制台中有401 javascript错误,我想摆脱它.

这是我正在谈论的消息的屏幕截图:

控制台错误

all*_*000 -2

您可以在页面上添加一个隐藏字段(我猜它是动态生成的),例如:

<input type="hidden" name="isLoggedIn" value="true" (or false) />
Run Code Online (Sandbox Code Playgroud)

然后在你的javascript中,放置

if ($('input[name=isLoggedIn"]').val() == "true")
{
     //your ajax call here
} 
Run Code Online (Sandbox Code Playgroud)