不使用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中文網其他相關文章!