golang HTTP请求 重定向禁止使用
使用 net/http 包
记录下
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
)
// RedirectFunc 重定向禁止
func RedirectFunc(req *http.Request, via []*http.Request) error {
fmt.Println(req.RequestURI)
// 如果返回 非nil 则禁止向下重定向 返回nil 则 一直向下请求 10 次 重定向
return http.ErrUseLastResponse
}
// test 测试 golang net/http 的重定向请求
func test(sAddr string) {
client := &http.Client{CheckRedirect: RedirectFunc}
rep, err := client.Get(sAddr)
if err != nil {
log.Panic(err)
}
//读取响应的结果
data, err := ioutil.ReadAll(rep.Body)
if err != nil {
log.Panic(err)
}
fmt.Println(string(data[:]))
//输出响应的头
for k, v := range rep.Header {
fmt.Println(k, v)
}
defer rep.Body.Close()
url, err := rep.Location()
if err != nil {
log.Panic(err)
}
fmt.Println(url.Host)
}
func main() {
test("https://v.kuaishou.com/8Ss9tY")
}