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")