在Go 中查詢URL 而不觸發自動重定向
在本文中,我們解決了在Go 中查詢URL 而不觸發自動重定向的問題。這通常是出於基準測試目的或當您只需要記錄重定向 URL 或錯誤時所必需的。
解決方案 1:使用 http.DefaultTransport.RoundTrip
建立 http .像往常一樣要求物件。不要將其傳遞給 http.Client,而是使用 http.DefaultTransport.RoundTrip() 發出請求。這會繞過 http.Client 的內建重定向處理。
import "net/http" func QueryURLWithoutRedirect(url string) (*http.Response, error) { req, err := http.NewRequest("GET", url, nil) if err != nil { return nil, err } return http.DefaultTransport.RoundTrip(req) }
解 2:使用 CheckRedirect 停用重定向
建立一個設定了 CheckRedirect 欄位的 http.Client為零。這會將客戶端配置為不遵循重定向。
import "net/http" func QueryURLWithoutRedirect(url string) (*http.Response, error) { client := &http.Client{ CheckRedirect: nil, } return client.Get(url) }
進一步注意事項
雖然兩種解決方案都提供了所需的功能,但第一種方法可能會在高負載下遇到效能問題,因為它可能會重複使用過早關閉的連線。
要確保每個查詢使用第二種方法開啟一個新連接,您可以為循環中的每個請求建立一個新的 http.Client。然而,這可能不是必要的,因為 Go 在一定時間後會自動關閉空閒連線。
最終,方法的選擇取決於您的特定效能要求以及您在現實場景中期望的行為。
以上是如何在 Go 中查詢 URL 而不遵循重定向?的詳細內容。更多資訊請關注PHP中文網其他相關文章!