首頁 >後端開發 >Golang >如何在 Go 中查詢 URL 而不遵循重定向?

如何在 Go 中查詢 URL 而不遵循重定向?

Linda Hamilton
Linda Hamilton原創
2024-12-06 02:16:13154瀏覽

How Can I Query URLs in Go Without Following Redirects?

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

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