http模块默认跟随重定向
使用http.Get,当遇到301跳转时,会获取重定向后的内容
res, err := http.Get(url) if err != nil { logrus.Error(err) return nil, err } //这里的状态是200 fmt.println(res.StatusCode)
获取页面重定向的location
为了获取重定向的location,要重新实现一个http.Client,例子如下:
baseHost := "https://www.example.com/" client := &http.Client{ CheckRedirect: func(req *http.Request, via []*http.Request) error { return http.ErrUseLastResponse }, } res, err := client.Get(baseHost) if err != nil { return baseHost } if res.StatusCode != 301 { return baseHost } return res.Header.Get("Location")
来源:https://www.cnblogs.com/xiaohunshi/p/12244962.html