我有一个检查 url 的函数:
func Checkurl(url string) {
client := &http.Client{}
req, err := http.NewRequest("GET", url, nil)
resp, err := client.Get(url)
错误变量:意外的 EOF
在 tcpdump 中我看到重定向和连接关闭:
15:53:41.510722 IP (tos 0x0, ttl 248, id 18315, offset 0, flags [none], proto TCP (6), length 123)
XXX.XXX.XXX.XXX.80 > XXX.XXX.XXX.XXX.53618: Flags [F.], cksum 0xb96f (correct), seq 85:168, ack 1, win 5840, length 83: HTTP, length: 83
HTTP/1.1 302 Moved Temporarily
Location: http://XXX.XXX.XXX.XXX
Connection: close
如何获取位置?
最佳答案
使用Response.Location
功能。
newUrl, err := resp.Location()
输入 Client
支持重定向。请参阅 CheckRedirect
字段。这可能是处理重定向的更好工具,具体取决于您要实现的目标。
对Request
对象方法使用client.Do
client := &http.Client{}
req, err := http.NewRequest("GET", url, nil)
// check error
resp, err := client.Do(req)
// check error
newURL, err := resp.Location()
// check error
默认客户端默认处理重定向,因此我会检查最终目的地的响应。这很可能是您问题的根本原因。
关于http - Go http客户端不遵循重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43520655/