今天给hosts添加镜像,用bae做镜像,结果volley第一次请求成功,之后再请求就是412了。 412-Precondition Failed-Some precondition specified in the request headers was false. (New in HTTP 1.1) 尝试清楚volley的缓存请求成功,有缓存后就出现412.后来抓包发现 如果要请求的链接已经有缓存的情况下,volley再次请求会在Http头信息中添加
If-None-Match
If-Modified-Since
简单的说,Last-Modified 与If-Modified-Since 都是用于记录页面最后修改时间的 HTTP 头信息,只是 Last-Modified 是由服务器往客户端发送的 HTTP 头,而 If-Modified-Since 则是由客户端往服务器发送的头,可 以看到,再次请求本地存在的 cache 页面时,客户端会通过 If-Modified-Since 头将先前服务器端发过来的 Last-Modified 最后修改时间戳发送回去,这是为了让服务器端进行验证,通过这个时间戳判断客户端的页面是否是最新的,如果不是最新的,则返回新的内容,如果是最新的,则 返回 304 告诉客户端其本地 cache 的页面是最新的,于是客户端就可以直接从本地加载页面了,这样在网络上传输的数据就会大大减少,同时也减轻了服务器的负担。 结果bae不支持,直接就抽了返回412。 临时解决方案: 在每次发送请求前,清空cache
rQueue.getCache().clear();
ps:不建议在errorListener中判断返回的response code 是否为412 参考链接:1/2