博客好长时间没有更新了,因为年底和年初,你懂的,希望以后进入轨。
前几天在开发过程中遇到这样一个HTTP请求错误:
okhttp too many follow-up requests: 21
看到 okhttp
反应过来是底层请求出现问题了,以前从来没有遇到过,很好奇。在github上面 okhttp 库搜索了一下上面的关键字,找到下面的代码:
其中 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
抓了下包,看到如下请求:
一直302跳转,每三个一循环,也就是说客户端 okhttp
请求302跳转超过20次就抛出异常,如果不是 okhttp
异常处理,估计是死循环了。
问服务器端开发,说要先调用一次授权接口,最近才加的功能。
话说出现这种问题不是服务器端逻辑有问题?一直允许这个死循环的302跳转?如果把okhttp的源码修改一下,无限循环下去,不会造成安全性问题?跟服务器端沟通,无果。