[英]Safari Only: Request header field Cache-Control is not allowed by Access-Control-Allow-Headers
[英]How to control cache-control in ajax request
您可以使用headers
屬性,如下所示:
$.ajax({
...
headers: {
'Cache-Control': 'max-age=1000'
}
...
});
請記住, cache
屬性與Cache-Control
標頭沒有任何共同之處,它只是一個緩存破壞者(將?_={timestamp}
附加到 GET 參數)並且僅適用於GET
和HEAD
請求。
無論如何,一些有用的東西: 如何設置 HTTP 標頭(用於緩存控制)?
真正的答案是,當您在 Network 面板中看到Cache-Control: max-age=0
,這很可能是瀏覽器為避免緩存所做的事情。 默認情況下,這不是 jQuery 正在做的事情。 所以改變標題沒有意義。 所以你可以簡單地使用$.getJSON()
並且 HTTP 緩存將工作......
所以只需關閉 devtools 中的禁用緩存功能,你應該沒問題(正如在 kav 的評論中已經指出的那樣)。
但還有另一個問題。 緩存控制標頭僅適用於普通 200 請求(成功)。 大多數錯誤不會在 Firefox 中緩存。 無論您的服務器說什么,Firefox 都會忽略響應中的 Cache-control 標頭。 所以無論你做什么 Firefox 都不會緩存 404 或 400 請求。 您可以使用 410 (Gone) 而不是 404。但這也需要在服務器端完成,而不是在 AJAX 請求中(因此在響應標頭中,而不是在請求標頭中)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.