okhttp too many follow-up requests 21

RichardSamantha 发布于6月前 阅读64次
0 条评论

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

前几天在开发过程中遇到这样一个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的源码修改一下,无限循环下去,不会造成安全性问题?跟服务器端沟通,无果。

查看原文: okhttp too many follow-up requests 21

  • crazymouse
  • bluemouse
需要 登录 后回复方可回复, 如果你还没有账号你可以 注册 一个帐号。