首頁 > 後端開發 > Golang > 如何防止 Go 的 HTTP 用戶端自動跟隨重定向?

如何防止 Go 的 HTTP 用戶端自動跟隨重定向?

Linda Hamilton
發布: 2025-01-04 01:53:39
原創
772 人瀏覽過

How Can I Prevent Go's HTTP Client from Automatically Following Redirects?

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

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