【发布时间】:2017-04-20 22:51:17
【问题描述】:
我有一个 Web 服务,它为每个响应添加一个 ETag,以便将来的调用可以使用 HTTP 304(未修改)状态。我生成的 ETag 实际上只是查询类型的 Base64 编码以及时间戳。
我遇到的问题是,如果浏览器使用不同的 Accept-Language 请求相同的资源。浏览器当前发送相同的 If-None-Match 标头,因此响应是 304,即使实际资源会以不同的语言返回。所以我认为这样做的方法是添加一个 Vary Header,以向客户端指定响应随 Accept & Accept-Language 而异,如下所示。
变化:接受,接受语言
但是,无论接受语言如何,我的浏览器 (Chrome) 都使用相同的 ETag。在这里使用的正确约定是什么?
谢谢
【问题讨论】:
标签: etag http-status-code-304 if-none-match