gpt4 book ai didi

javascript - 对于在 Firefox 中具有状态代码 408 的 XHR,状态代码、文本和所有响应 header 均为空

转载 作者:行者123 更新时间:2023-11-30 05:42:09 26 4
gpt4 key购买 nike

我正在尝试检测 Ajax (xhr) 请求何时获得状态代码 408,以便将用户定向到登录/超时页面。

目前我正在使用旧版本的 jQuery (1.3.2) 来执行我所有的 ajax 请求,并使用以下代码来检测 408 错误响应:

$().ready(function() {
$.ajaxSetup({
error:function(x,e) {
if (x.status==408) {
document.location.href = '/timeout.html';
} else {
document.location.href = '/error.html';
}
}
});
});

此代码在 Firefox 中未按预期工作,并且 xhr 对象的状态代码为 0 且状态文本为空,即使状态代码确实为 408。因此加载一般错误页面而不是超时页面。

编辑:我尝试了 console.dir(x) 并得到了这个输出(你可以看到状态为 0,状态文本为“”): enter image description here

ajax 请求不是跨域的,而是从同一个域发出的。

我还注意到,对于在 Firefox 中具有错误状态的任何 XHR,所有响应 header 都已清除。

这些问题在 Chrome 中都不明显。

我什至尝试了一个简单的 XMLHttpRequest 到一个 URL,它将返回 408 状态(所有在同一个域/来源)并且所有 header 都是空的 - 示例如下:

var x = new XMLHttpRequest();
x.open("GET", "http://example.com/url-that-will-return-408-status");
x.onreadystatechange = function() {
if(this.readyState == 2) {
console.log('CustomErrorCode=' + this.getResponseHeader('CustomErrorCode'));
console.log('Content-Length=' + this.getResponseHeader('Content-Length'));
console.log('Content-Type=' + this.getResponseHeader('Content-Type'));
console.log(this.getAllResponseHeaders());
}
}
x.send();

关于为什么 Firefox 在这方面与 Chrome 不同以及我如何解决这个问题有什么想法吗?基于我的 reading of the W3C spec似乎 Firefox 正在做正确的事情,但我不太明白为什么会清除响应 header 以显示错误状态。

最佳答案

检查 this出。

只要提供 408 状态代码,Firefox 似乎会重新请求 10 次。

A ticket已打开有关此 Firefox“问题”的信息,此行为实际上不符合 RFC .由于勾选被正式标记为RESOLVED FIXED(与许多其他 408 相关的问题一样,herehere),我建议您检查您的版本并最终重新打开它,提供有关您的环境的更多信息。

关于javascript - 对于在 Firefox 中具有状态代码 408 的 XHR,状态代码、文本和所有响应 header 均为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20210252/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com