首页 >后端开发 >Golang >如何在 Go 的 `http.Client` 中获取重定向后的最终 URL?

如何在 Go 的 `http.Client` 中获取重定向后的最终 URL?

Susan Sarandon
Susan Sarandon原创
2024-11-16 18:07:02329浏览

How to Get the Final URL After Redirects in Go's `http.Client`?

在 Http.Go 中提取重定向后的最终 URL

在使用 http.NewRequest 发出 HTTP 请求时,您可能会遇到需要在任何重定向后从最终 URL 中提取查询字符串。 Response 对象本身并不提供对最终 URL 的访问。

要在重定向后检索 URL:

  1. 在 CheckRedirect 回调中创建一个匿名函数。
  2. 在匿名函数中,将 lastUrlQuery 变量设置为重定向请求的 RequestURI()。
  3. 返回 nil允许重定向。

这是演示此方法的代码片段:

req, err = http.NewRequest("GET", URL, nil)
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 {
    log.Fatal(err)
}
fmt.Printf("last url query is %v", lastUrlQuery)

通过使用此技术,您可以在所有重定向发生后捕获最终 URL,从而允许您从最终目的地访问查询字符串和其他信息。

以上是如何在 Go 的 `http.Client` 中获取重定向后的最终 URL?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn