首页 > 后端开发 > Golang > 如何防止 Go 的 HTTP 客户端自动跟随重定向?

如何防止 Go 的 HTTP 客户端自动跟随重定向?

Linda Hamilton
发布: 2025-01-04 01:53:39
原创
780 人浏览过

How Can I Prevent Go's HTTP Client from Automatically Following Redirects?

利用 Go HTTP 客户端禁用自动重定向

在 Go 编程中,构建 RESTful API 客户端时处理 HTTP 重定向至关重要。然而,在某些情况下,自动重定向处理是不受欢迎的。此问题探讨了一种防止 Go HTTP 客户端自动跟踪重定向的替代方法。

问题中提供的初始解决方案突出显示了 CheckRedirect 函数的自定义实现,强制将 HTTP 重定向视为错误。虽然技术上有效,但将重定向归类为失败感觉不自然。

为了解决这个问题,答案提出了一个更优雅的解决方案:修改 CheckRedirect 函数以返回 http.ErrUseLastResponse。这向 HTTP 包发出信号,表明不应遵循重定向,而不触发错误处理。

以下是更新后的代码:

client := &http.Client{
    CheckRedirect: func(req *http.Request, via []*http.Request) error {
        return http.ErrUseLastResponse
    },
}
登录后复制

通过此修改,HTTP 客户端将忽略重定向并返回最新的响应,其主体仍然可访问。源代码中的注释阐明了:

作为一种特殊情况,如果 CheckRedirect 返回 ErrUseLastResponse,则返回最新的响应,其正文未关闭,并带有 nil 错误。

作为因此,您可以在脚本中手动处理重定向,从而提供更大的灵活性和对 HTTP 工作流程的控制。通过利用此技术,您可以与返回重定向的 REST API 进行交互,同时保持所需的自定义级别。

以上是如何防止 Go 的 HTTP 客户端自动跟随重定向?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板