文章目录

博客好长时间没有更新了,因为年底和年初,你懂的,希望以后进入轨。

前几天在开发过程中遇到这样一个HTTP请求错误:

1
2
okhttp too many follow-up requests: 21

看到okhttp反应过来是底层请求出现问题了,以前从来没有遇到过,很好奇。在github上面okhttp库搜索了一下上面的关键字,找到下面的代码:

too many follow-up requests exception

其中MAX_FOLLOW_UPS常量的值为20,代码如下所示,并且还有注释说明:

1
2
3
4
5
/**
* How many redirects and auth challenges should we attempt? Chrome follows 21 redirects; Firefox,
* curl, and wget follow 20; Safari follows 16; and HTTP/1.0 recommends 5.
*/
private static final int MAX_FOLLOW_UPS = 20;

上面描述各种浏览器重定向次数说明,okhttp里面使用的是最多允许20次。

google上搜索发现有人说是okhttp的bug,低版本会出现这个bug,高版本已经修复,一看自己的版本,已经是最新版本。

Fiddler抓了下包,看到如下请求:

循环302请求

一直302跳转,每三个一循环,也就是说客户端okhttp请求302跳转超过20次就抛出异常,如果不是okhttp异常处理,估计是死循环了。

问服务器端开发,说要先调用一次授权接口,最近才加的功能。

话说出现这种问题不是服务器端逻辑有问题?一直允许这个死循环的302跳转?如果把okhttp的源码修改一下,无限循环下去,不会造成安全性问题?跟服务器端沟通,无果。

文章目录