首頁 > 後端開發 > Golang > 如何在 Go HTTP 用戶端中停用自動重定向?

如何在 Go HTTP 用戶端中停用自動重定向?

Linda Hamilton
發布: 2024-12-26 05:42:44
原創
519 人瀏覽過

How to Disable Automatic Redirects in the Go HTTP Client?

在Go HTTP 用戶端中停用自動重定向

當API 端點傳回具有下列內容的HTTP 302 重新導向時,Go HTTP 用戶端會自動遵循HTTP 重定向: HTTP 位置標頭。在某些情況下,這種行為可能是不可取的,例如當您需要捕獲 HTTP Location 標頭以供以後處理時。

停用自動重定向的常見方法涉及覆寫客戶端的 CheckRedirect 函數。然而,這個解決方案可能感覺像是駭客,因為它將 HTTP 重定向視為錯誤,但事實並非如此。

更優雅的解決方案是使用 http.Transport 來設定客戶端的行為:

import (
    "net/http"
)

// Create a custom round-trip transport
transport := &http.Transport{
    DisableKeepAlives: true,
}

// Create an HTTP client with the custom transport
client := &http.Client{
    Transport: transport,
}
登入後複製

在此設定中,DisableKeepAlives 欄位設定為true,這會阻止客戶端保持持久連接,從而避免需要攔截

或者,您可以使用以下程式碼明確停用重定向:

client := &http.Client{
    CheckRedirect: func(req *http.Request, via []*http.Request) error {
        return http.ErrUseLastResponse
    },
}
登入後複製

使用此程式碼,HTTP 套件會自動識別不應遵循重定向,但不會拋出任何異常錯誤。這允許您使用基本驗證發出 HTTP 請求,同時停用自動重新導向,而無需訴諸複雜的錯誤處理。

以上是如何在 Go HTTP 用戶端中停用自動重定向?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板