2

我有一个 Web 服务,它为每个响应添加一个 ETag,以便将来的调用可以使用 HTTP 304(未修改)状态。我生成的 ETag 实际上只是查询类型的 Base64 编码以及时间戳。

我遇到的问题是浏览器是否请求具有不同接受语言的相同资源。浏览器当前发送相同的 If-None-Match 标头,因此响应是 304,即使实际资源会以不同的语言返回。所以我认为这样做的方法是添加一个 Vary Header,以向客户端指定响应随 Accept & Accept-Language 的不同而不同,如下所示。

变化:接受,接受-语言

但是,无论接受语言如何,我的浏览器 (Chrome) 都使用相同的 ETag。在这里使用的正确约定是什么?

谢谢

4

1 回答 1

1

E-Tag 标识响应内容。所以最好使用响应体哈希来构建电子标签。至少您可以使用查询的哈希值和连接的语言。

于 2016-12-06T10:34:41.593 回答