利用 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中文网其他相关文章!