[英]Chrome downloads the reloaded page on HTTP 205 response after an AJAX request
在項目上工作,我只是發出一個AJAX請求來處理一些數據。
完成作業后,服務器將返回HTTP 205 RESET CONTENT
響應
我使用此狀態代碼告訴請求者重置文檔視圖
這是我使用的代碼片段
$.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)不是刷新頁面,而是在調用window.location.reload
時下載 正在重新加載 dump 的頁面的響應內容
這是我嘗試過的
window.location.href = window.location.href
給出了相同的結果 history.go(0)
給出了相同的結果 window.location.reload
,則不會重新加載任何內容 這是正在發生的事情的視覺網絡
附加信息(以及更深入的調查)
為什么Chrome和Opera在205
HTTP響應中的行為如此?
我能找到的最接近的是它可能是一個bug,因為在這個文件中: https : //chromium.googlesource.com/chromium/chromium/+/trunk/net/http/http_stream_parser.cc
從第837行開始的注釋與第850行的代碼不匹配:即注釋沒有提到205必須是零長度,但代碼對待205就像1xx,204和304.這實際上是唯一的眨眼代碼我可以找到提到205(定義常量之外)。
也許值得嘗試最新的Opera版本; 如果問題也在那里發生,它會更強烈地指向Blink源代碼中的錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.