首頁 >後端開發 >Golang >如何防止 Go HTTP 用戶端重新導向?

如何防止 Go HTTP 用戶端重新導向?

DDD
DDD原創
2024-12-21 06:44:13578瀏覽

How Can I Prevent Redirects with the Go HTTP Client?

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

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn