首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么OkHttp在设置If修改的自标头时,处理日期头与处理最后修改的标头相同?

为什么OkHttp在设置If修改的自标头时,处理日期头与处理最后修改的标头相同?
EN

Stack Overflow用户
提问于 2017-04-10 22:24:56
回答 1查看 328关注 0票数 2

我正在使用一个Jenkins插件,它使用OkHttp库来处理与Github的集成。

当OkHttp试图使用不允许访问资源的令牌请求资源时,Github的/repos/:owner/:repo端点返回错误404。当扩展令牌的作用域以允许它访问资源时,OkHttp使用If修改的--从标头发出请求。报头的值设置为404响应中日期标头的值。来自第二个请求的响应是HTTP 304。根据Github的支持团队,这种行为是正确的行为,因为资源( /repos/:owner/:repo端点后面的数据)自第一个请求发出以来就没有被修改过。但是,这意味着OkHttp客户机现在使用缓存的404响应。

看起来日期头是用来计算新鲜度的,而不是检查资源最后一次修改的时间。RFC 7232节3.3说,客户端可以使用日期头的值作为如果修改的自值,但我还没有在网络上看到其他文献表明这种行为是可以接受的。在Mozilla关于If修改自标头的文档中,我没有看到任何对日期头的引用。

Postel定律不建议OkHttp不要误用日期标头,将它用作If修改后的标头的另一个源吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-11 02:15:04

RFCs对什么行为是合适的是明确的。如果RFC说Date头可以与If-Modified-Since一起使用,那么它可以是。

考虑说服GitHub在扩展范围时使缓存无效。如果2017-03-01提供了答复,2017-04-01扩大了令牌的范围,那么2017-04-01有效地修改了资源。

另一个选择是禁用OkHttp的缓存。与每个缓存一样,由于遵守错误缓存配置的指令,它违反了Postel定律。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43333829

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档