go中http客户端设置当响应码为3xx时禁止自动跳转
通常在http客户端请求的时候,如果遇到响应码为3XX,并且header中也有 Location
字段时,go的 net/http
库会自动完成跳转
但是现实场景是,有时咱们需要对跳转前的数据做处理,然后再手动跳转
这个时候该怎么办呢?
在Go中,可以通过自定义http.Client的CheckRedirect函数来禁用自动重定向。
CheckRedirect函数允许你控制是否要跳转以及如何跳转。
若CheckRedirect函数返回http.ErrUseLastResponse,则客户端不会执行自动重定向。
package main
import (
"fmt"
"net/http"
)
func main() {
client := &http.Client{
CheckRedirect: func(req *http.Request, via []*http.Request) error {
return http.ErrUseLastResponse // 禁用自动跳转
},
}
// 假设这个链接会跳转
resp, err := client.Get("http://example.com")
if err != nil {
fmt.Println("请求失败:", err)
return
}
defer resp.Body.Close()
fmt.Println("响应状态码:", resp.StatusCode)
}
在上述示例中,我们创建了一个自定义的http.Client对象,并将其CheckRedirect字段设置为一个匿名函数。
这个函数返回http.ErrUseLastResponse错误,这样就禁用了自动跳转。
当客户端遇到重定向时,该函数将被调用。
由于我们返回了特定的错误,客户端将使用最后一次的响应而不会自动跳转。
本文来自博客园,作者:厚礼蝎,转载请注明原文链接:https://www.cnblogs.com/guangdelw/p/17559596.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能