Go语言http.Client如何配置仅允许跟随1次重定向
要实现仅允许客户端跟随最多1次重定向,只需调整CheckRedirect函数的判断逻辑即可:
CheckRedirect的入参via是按顺序存储已发起请求的切片,第一个元素为初始请求,后续元素是已经完成的重定向请求,len(via)的值等于已发起的请求总数。当需要限制最多跟随1次重定向时,只需判断已发起请求总数超过2(初始请求+1次重定向)时返回http.ErrUseLastResponse终止重定向,否则返回nil允许继续跳转即可。
修改后的代码如下:
client := &http.Client{ CheckRedirect: func(req *http.Request, via []*http.Request) error { // 仅允许1次重定向,已发起请求数超过2时终止跳转 if len(via) > 1 { return http.ErrUseLastResponse } return nil }, }
如果后续需要调整允许的最大重定向次数,直接修改判断条件中的数值即可,比如要允许最多5次重定向,将条件改为len(via) > 5即可。
内容的提问来源于stack exchange,提问作者daisy
相关产品推荐
相关产品推荐

