[英]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.