获得浏览器控制台摆脱401(未授权)Ajax错误的(Get rid of a 401 (unauth

2019-08-06 22:11发布

我使用的是通过JavaScript调用API jQuery.ajax电话。 通过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!");
    });

这也有,因为浏览器认为该用户没有通过验证,那么在下面的请求,用户需要重新输入自己的HTTP凭据再次请求其通过.htaccess文件保护的暂存计算机上的用户凭据的副作用。

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

编辑

目前,我有完全缓存应用端的HTML模板,我想保持这种行为表现的原因。 这改变了布局的唯一组成部分,是当前用户的登录信息,所以我渲染(缓存)页面,登录用户不默认的标记,然后使用jQuery我更换标记的相关内容与登录信息通过AJAX调用返回。 因此,如果用户没有登录和AJAX端点返回401我什么都不需要,标记应保持不变。

一切工作在这一刻,只有丑陋的事情是,我有401,我想的JavaScript错误控制台,并摆脱它。

这是我说的是消息的截图:

Answer 1:

我也遇到了这个问题,并希望surpress异常在JavaScript控制台HTTP 401和404等错误。 我发现这个问题,并没有看到为什么错误()和的StatusCode()处理没有安静异常,所以我做了我自己挖进去。

至于我可以告诉事实证明,这是一个在浏览器中的原生AJAX XMLHttpRequest对象,不使用jQuery的问题。 为了证明这一点,我用下面的测试代码:

function xhrTest(index) {
    var ajaxObjects = [
        $.ajaxSettings.xhr(), // what jquery returns
        new XMLHttpRequest()  // the native one in the browser
    ];
    var ajax = ajaxObjects[index];
    ajax.onreadystatechange = function() {console.log("xhrTest: state: " + ajax.readyState)};
    var errorHandler = function() {console.log("xhrTest: error");};
    ajax.onerror = errorHandler;
    ajax.onabort = errorHandler;
    ajax.open("GET", "/fileThatDoesNotExist", true);
    ajax.send();    
}

请注意,在调用这个(我做到了从JavaScript控制台)当任xhrTest(0)或xhrTest(1),它绕过jQuery的,结果都是一样的:



Answer 2:

你可以添加一个隐藏字段拖到页面上(我猜它的动态生成的),如:

<input type="hidden" name="isLoggedIn" value="true" (or false) />

然后,在你的JavaScript,地点

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


文章来源: Get rid of a 401 (unauthorized) ajax error in browser console