不使用 Go HTTP 客户端进行重定向
与返回重定向响应的 REST API 交互时,修改 Go HTTP 客户端的行为对于特定的用例,忽略重定向可能是必要的。这是实现此功能的简单有效的方法:
http.Client 的 CheckRedirect 函数优先于默认的重定向跟踪行为。通过自定义此函数,您可以确定何时应遵循重定向。为了防止自动重定向,请提供替代实现:
CheckRedirect: func(req *http.Request, via []*http.Request) error { return http.ErrUseLastResponse }
此配置通知 HTTP 包避免重定向操作。它返回 http.ErrUseLastResponse,指示包使用最新的响应,且正文仍可访问。
在您的示例中,按如下方式更新客户端配置:
client := &http.Client{ CheckRedirect: func(req *http.Request, via []*http.Request) error { return http.ErrUseLastResponse }, }
通过设置此配置后,您的脚本将成功建立与端点的连接,检索 HTTP Location 标头以进行进一步处理,并避免被重定向到新资源。与强制错误处理的替代解决方案相比,此方法提供了更优雅且无错误的方法。
以上是如何防止 Go HTTP 客户端重定向?的详细内容。更多信息请关注PHP中文网其他相关文章!