转载

okhttp too many follow-up requests 21

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

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

okhttp too many follow-up requests: 21

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

okhttp too many follow-up requests 21

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

/**
 * 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 抓了下包,看到如下请求:

okhttp too many follow-up requests 21

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

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

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

原文  http://www.jacpy.com/2018/05/18/okhttp-too-many-follow-up-requests-21.html
正文到此结束
Loading...