为了账号安全,请及时绑定邮箱和手机立即绑定

是否可以在HTTP中缓存POST方法?

是否可以在HTTP中缓存POST方法?

墨色风雨 2019-08-06 17:10:11
是否可以在HTTP中缓存POST方法?使用非常简单的缓存语义:如果参数相同(当然URL相同),那么它就是一个命中。那可能吗?推荐的?
查看完整描述

3 回答

?
有只小跳蛙

TA贡献1824条经验 获得超8个赞

如果使用适当的头,则9.5节(POST)中相应的RFC 2616允许缓存对POST消息的响应

除非响应包含适当的Cache-Control或Expires头字段,否则对此方法的响应不可缓存。但是,303(请参阅其他)响应可用于指示用户代理检索可缓存资源。

请注意,相同的RFC在第13节(在HTTP中缓存)中明确指出缓存必须在POST 请求后使相应的实体无效。

某些HTTP方法必须导致缓存使实体无效。这可以是Request-URI引用的实体,也可以是Location或Content-Location头(如果存在)。这些方法是:

  - PUT
  - DELETE
  - POST

我不清楚这些规范如何允许有意义的缓存。


查看完整回答
反对 回复 2019-08-06
?
哈士奇WWW

TA贡献1799条经验 获得超6个赞

根据RFC 2616第9.5节:

“对POST方法的响应不可缓存,除非响应包含适当的Cache-Control或Expires头字段。”

所以,是的,你可以缓存POST请求响应,但只有当它到达时才有适当的头。在大多数情况下,您不希望缓存响应。但在某些情况下 - 例如,如果您没有在服务器上保存任何数据 - 这是完全合适的。

请注意,然而,无论标头如何,许多浏览器(包括当前的Firefox 3.0.10)都不会缓存POST响应。在这方面,IE表现得更聪明。

现在,我想澄清一些关于RFC 2616 S. 13.10的混淆。对于URI的POST方法不会“使用于缓存的资源无效”,正如一些人在此处所述。它使该URI的先前缓存版本过时,即使其缓存控制头指示较长持续时间的新鲜度。


查看完整回答
反对 回复 2019-08-06
  • 3 回答
  • 0 关注
  • 2617 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信