如何在 Go 的 http.NewRequest 中获取重定向后的最终 URL
使用 http.NewRequest 发出 HTTP 请求时,可能会遇到情况服务器重定向请求的位置。要从最终 URL 中提取查询字符串,您需要找到请求最终到达的 URL。
尽管 http.Response 对象中缺少显式字段,但有一种方法可以获取最终 URL URL:
使用匿名函数检查重定向
可以使用匿名函数捕获并保存最终的重定向 URL。下面是一个示例:
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)
提供给客户端的 CheckRedirect 函数包装了默认的检查重定向机制。它检查重定向次数并将最终 URL 查询保存在 lastUrlQuery 变量中。请求执行完成后,您可以通过lastUrlQuery访问最终URL。
以上是如何使用 Go 的 http.NewRequest 获取重定向后的最终 URL?的详细内容。更多信息请关注PHP中文网其他相关文章!