因为开发中需要对http请求中的Host进行设定,想当然的任务通过req.Header.set("Host", "gltest.com")设定。但是结果确实请求中的Host根本没有生效。后来才发现golang如果要设定Host需要通过req.Host="gltest.com"来设定。在这标记一下。
http://httpbin.org 是个不错的地方,可以查看http请求的内容
代码如下
package main
import (
"io/ioutil"
"log"
"net/http"
)
const (
URL = "http://httpbin.org/headers"
)
func main() {
client := &http.Client{}
req, err := http.NewRequest("GET", URL, nil)
if err != nil {
log.Fatalln(err)
}
req.Header.Set("User-Agent", "GolangSpider/1.0")
//req.Header.Set("Host", "gltest.com") //incorrect way to set Host
req.Host = "gltest.com"
resp, err := client.Do(req)
if err != nil {
log.Fatalln(err)
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatalln(err)
}
log.Println(string(body))
}
有疑问加站长微信联系(非本文作者)