我想为POST请求创建一个可缓存的HTTP响应。
我的实际实现响应了以下POST请求:
HTTP/1.1 201 Created
Expires: Sat, 03 Oct 2020 15:33:00 GMT
Cache-Control: private,max-age=315360000,no-transform
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Content-Length: 9
ETag: 2120507660800737950
Last-Modified: Wed, 06 Oct 2010 15:33:00 GMT
.........
但看起来浏览器(Safari,Firefox已测试)并没有缓存响应。
在HTTP RFC相应部分说:
对此方法的响应不可缓存,除非响应包含适当的Cache-Control或Expires头字段。但是,303(请参阅其他)响应可用于指示用户代理检索可缓存资源。
所以我认为它应该被缓存。我知道我可以设置会话变量并设置cookie并进行303重定向,但我想缓存POST请求的响应。
有没有办法做到这一点?
P.S。:我从一个简单的200 OK
开始,所以它不起作用。
谢谢,
答案 0 :(得分:3)
我还注意到缓存总是可选的(它是HTTP / 1.1 RFC中的MAY)。由于在大多数情况下,一个成功的POST 无效一个缓存条目,可能只是你正在看的浏览器缓存只是没有实现缓存POST响应(因为这将是非常罕见的 - - 这通过将事物格式化为GET来完成,听起来就像你已经完成的那样。)
答案 1 :(得分:0)
您是否可以尝试将Cache-Control
更改为public
而不是private
,看看它是否有效?