在项目上工作时,我只是发出一个AJAX请求来处理一些数据
完成作业后,服务器将返回HTTP 205 RESET CONTENT
响应
我使用此状态代码告诉请求者reset the document view
以下是我使用的代码
$.ajax({
url: '/unread',
method: 'PUT',
data: {
notifications: elements
}
}).done(function(content, message, xhr) {
if (205 !== xhr.status) {
// Generic error message
return;
}
window.location.reload(true)
}).fail(function() {
// Generic error message
})
这适用于Internet Explorer (8及以上),Firefox (28.0)和Opera (12.16)。但Chrome (33.0)和Opera (20.0)而不是刷新页面,下载正在重新加载的页面的响应内容 < / strong> dump 致电window.location.reload
这是我尝试过的事情
window.location.href = window.location.href
给出相同的结果history.go(0)
给出相同的结果window.location.reload
,则不会重新加载任何内容以下是发生了什么的视觉网络
附加信息(以及更深入的调查)
为什么Chrome和Opera在205
HTTP响应中的行为如此?
答案 0 :(得分:3)
我能找到的最接近的是它可能是一个bug,因为在这个文件中: https://chromium.googlesource.com/chromium/chromium/+/trunk/net/http/http_stream_parser.cc
从第837行开始的注释与第850行的代码不匹配:即注释没有提到205必须是零长度,但代码对待205就像1xx,204和304.这实际上是唯一的闪烁代码我可以找到提到205(在定义常量之外)。
也许值得尝试最新的Opera版本;如果问题也发生在那里,它会更强烈地指向Blink源代码中的错误。