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

我正在使用jQuery.ajax调用通过javascript调用api。 如果用户未经过身份validation,则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!"); }); 

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

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

编辑

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

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

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

控制台错误

我也遇到了这个问题,并希望在JavaScript控制台中抑制HTTP 401和404等错误的exception。 我发现了这个问题并且没有看到为什么error()和statusCode()处理程序没有使exception安静,所以我自己进行了挖掘。

据我所知,事实certificate这是浏览器中本机ajax XMLHttpRequest对象的问题,而不是jQuery。 为了certificate这一点,我使用了以下测试代码:

 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(); } 

请注意,当使用xhrTest(0)或xhrTest(1)(绕过jQuery)调用this(我是从JavaScript控制台执行)时,结果是相同的:

相同的结果是否使用jQuery

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

  

然后在你的JavaScript,地方

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