簡體   English   中英

未修改的Ajax 304無法接收響應

[英]ajax 304 not modified can't receive response

我有一個用於處理緩存控制的API。 服務器將響應頭設置為“ last-modified”,而來自瀏覽器的下一個請求將具有If-modified-Since頭。

但是,當我使用ajax請求API時,它不會自動設置If-modified-Since標頭。 我在ajax請求標頭中設置了If-modified-Since,服務器響應304狀態碼。 但是響應主體是空的。

ajax是否需要手動實現瀏覽器有關緩存控制的行為?

有更好的解決方案嗎?

在這里找到了類似的問題。

對於304響應,響應主體應該為空,這就是它的工作方式。 該協議指出:

304響應必須不包含消息正文,因此始終由標頭字段之后的第一個空行終止。

因此,如果您發送帶有If-modified-since的請求並且不滿足條件,則不會獲得響應正文(實際數據)。 您基本上是在說您擁有內容並且僅在內容更新時才想要它。

嘗試不使用If-Modified-Since標頭,而是使用Cache-control標頭:

$.ajax({
...
headers: {
     'Cache-Control': 'max-age=1000' 
}
...
});

最后,在我研究了問題后,它解決了。

將請求標頭設置為

'Cache-Control': 'max-age=0'

如果響應提供Last-Modified標頭,則下一個請求將自動設置If-Modified-Since且值相等。

當發生304響應時,響應內容來自瀏覽器緩存。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM