在 Go 的 http 包中,发出多个查询字符串的 http 请求是很常见的。然而,从最终 URL 中提取这些字符串可能具有挑战性,尤其是在发生重定向时。不幸的是,Response 对象缺少有关此最终 URL 的信息。
尽管可以使用重定向预防选项,但本文重点讨论在发出请求后获取 URL。要实现此目的:
下面是一个示例代码片段:
import ( "fmt" "log" "net/http" ) func main() { req, err := http.NewRequest("GET", "URL", nil) if err != nil { log.Fatal(err) } 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\n", lastUrlQuery) }
此代码将重定向请求并将最终的 URL 查询保存在最后的UrlQuery。
以上是如何在 Go 中检索 HTTP 重定向后的最终 URL?的详细内容。更多信息请关注PHP中文网其他相关文章!