okhttp post 重定向参数丢失 跨协议重定向

如题所述

第1个回答  2022-06-20
最近的项目中,一个已经开发多时的接口突然就不能用了。抓包发现,原来是由于重定向引起的bug。发现了两个。

如果遇到301,302等重定向,则会忽略原来的请求方式,统一使用GET方式。如果原来使用的是POST方式,则会丢失参数。如下图

okhttp源码中不支持跨协议重定向。如下图

通过抓包发现,每一次点击重试,okhttp遇到301重定向到https时都报错而不会自动重定向。下面一个301都是一次请求的结果。

为了解决这个问题我写了一个拦截器。

遇到这类问题,其实很难发现,因为后台以为只是简单的做一个映射可能都不会通知移动人员,然而如果是已上线的项目这么做照成大面积接口不可用必然是我们不想看到的。遇到这类问题,关键还是要通过抓包来分析问题,同时必须熟悉HTTP协议。

okhttp http 重定向到https
okhttp源码解析-http协议的实现-重定向
HTTP状态码302、303和307的故事