【发布时间】:2014-04-27 04:39:18
【问题描述】:
以下测试用例导致 Chrome 34.0.1847.116m 和 Firefox 28 在收到 HTTP 304 后返回(我认为是)不正确的响应。
- 客户端使用
Accept: text/html请求GET http://example.com/companies/1/ - 服务器返回表示
A和一些标头。 - HTML 中的 Javascript 导致客户端使用
Accept: application/vnd.com.mycompany.something+json; version=1请求GET http://example.com/companies/1/ - 服务器返回表示
B和不同的标头。 - 现在...按 F5 重新加载页面。
- 重复步骤 1-4,除了服务器为所有请求返回
HTTP 304。 - 第 1 步返回
A和第一组标头,如预期的那样,但第 4 步也返回A和第一组标头,这是出乎意料的。
意思是,尽管请求Accept 已更改,浏览器仍返回相同的缓存响应(正文和标头)。我期待最后一个请求返回 B 和第二组标头。
我做错了吗?或者这是 Chrome 和 Firefox 中的错误?
【问题讨论】:
-
服务器是否发送
Vary: Accept? -
@BorisZbarsky,你成功了。实际上,几分钟前我通过阅读tools.ietf.org/html/draft-ietf-httpbis-p6-cache-26#section-4.1 独立地解决了这个问题。请发布正式答案,我会将其标记为已接受。
-
完成。 Vary 的处理当然比每个人都遵循规范更混乱...... :(
标签: google-chrome http rest firefox