在 Http.Go 中檢索最終 URL
如何在一系列 HTTP 請求(包括任何重定向)之後提取最終 URL?提供的程式碼使用 http.NewRequest 發起請求,但 Response 物件不包含最終 URL 的欄位。
解:
一個方法是利用匿名函式和http.Client.CheckRedirect。透過定義自訂 CheckRedirect 函數,您可以擷取重定向先前的最後一個 URL 查詢。以下是一個範例:
import ( "fmt" "io" "net/http" ) func main() { req, err := http.NewRequest("GET", "https://example.com", nil) if err != nil { // Handle error } cl := http.Client{} var lastUrlQuery string cl.CheckRedirect = func(req *http.Request, via []*http.Request) error { if len(via) > 10 { return errors.New("too many redirects") } lastUrlQuery = req.URL.RequestURI() return nil } resp, err := cl.Do(req) if err != nil { // Handle error } io.Copy(io.Discard, resp.Body) fmt.Printf("Last URL query: %s\n", lastUrlQuery) }
在此程式碼中,lastUrlQuery 在每次重定向之前捕獲 URL 查詢。當重定向鏈完成或達到限制(在範例中設定為 10)時,最終的 URL 查詢將儲存在 lastUrlQuery 中。
以上是Go 中如何取得 HTTP 重新導向後的最終 URL?的詳細內容。更多資訊請關注PHP中文網其他相關文章!