我在一个项目中使用Android Volley Networking库。

当我自己将带有etag的“if-None-Match”添加到标题时,我没有得到304,因为Volley还添加了“If-Modified-Since”。缓存的响应的标头中没有“Last-Modified”。

如果缓存的请求中没有“上次修改时间”,Volley是否应该发送“If-Modified-Since”?

最佳答案

tl;博士:不,我不认为Volley应该在其请求中发送If-Modified-Since,至少不是当前的方式。

更长的答案:

Volley使用来自先前响应herehereIf-Modified-Since标头设置Date标头。

看起来好像有一个patch here可以解决截击问题,从而使其表现得更加适当(即使用Last-Modified响应标头)。

这是两个随后的请求,它们均从Volley / Android产生200个响应:

Request 1
If-None-Match: "cd090c6cb990a25585f1748d85d764bd"
If-Modified-Since: Tue, 16 Dec 2014 14:21:13 GMT+00:00

Response 1
ETag: "cd090c6cb990a25585f1748d85d764bd"
Date: Tue, 16 Dec 2014 14:21:29 GMT

Request 2
If-None-Match: "cd090c6cb990a25585f1748d85d764bd"
If-Modified-Since: Tue, 16 Dec 2014 14:21:29 GMT+00:00

Response 2
ETag: "cd090c6cb990a25585f1748d85d764bd"
Date: Tue, 16 Dec 2014 14:23:31 GMT

响应不包含Last-Modified标头,因此http客户端没有If-Modified-Since的适当值...但是Volley从上一个响应中发送带Date值的If-Modified-Since

关于android-volley - 当文档中没有Last-Modified时,Volley将发送If-Modified-Since,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21992721/

10-10 09:19