Android Nginx Retrofit+Okhttp.HTTP 504 Unsatisfiable Request (only-if-cached)

504 Unsatisfiable Request (only-if-cached)

在使用 okhttp 过程中,有可能会报题错误。其实这个问题很复杂,涉及到很多情况,比如 缓存、Nginx 、okhttp配置。当初碰到此问题时,花费很多时间和精力,太奇怪了。后面直接采用粗暴的做法解决(后面会说)。

出现这种情况一般来说是我们前端配置了缓存,但是后台服务端却没有合理处理缓存请求头。

解法一 Cache-Control

看看 OkHttpClient 的配置,是否配置了缓存。不直接分析 OkHttpClient  的缓存机制,简单说做法,先全局搜索Cache-Control ,看看有没有在头部配置缓存,如果搜到了,找到对应头部,去掉它。
如果没搜索到,再搜索CacheControl.FORCE_CACHE ,看看有没有设置请求缓存,如果有也去掉。也就是说不加缓存,无网不能获取数据,有网都用接口中的数据。

解法二 域名改成IP

因为后台使用Nginx并没有处理我们请求头中的缓存,所以不用域名做地址,用域名映射的IP,这样就不会通过Nginx,直接通过IP+Port请求接口。

未经允许不得转载:老郭种树 » Android Nginx Retrofit+Okhttp.HTTP 504 Unsatisfiable Request (only-if-cached)

赞 (0)

评论

4+8=

能将我博客放入广告拦截白名单吗?

我尽量分享有用并且长期有用的内容,希望能帮到你,谢谢支持。