阅读:3198回复:0
小知识点:关于go在http请求时设置Host头的小坑本问题来自于网友的提交。我们在进行Http 请求时,有时候会需要设置一些请求头,也许会写如下代码 url:="xxxx" req,err:=http.NewRequest("GET",url,nil) if err!=nil{ ...... } req.Header.Set("Content-Type", "application/json") req.Header.Set("Host","xxxx") //注意这里 client := &http.Client{Transport:tr} rsp,err:=client.Do(req) 后面略 这里面如果是 其他头,可能没啥问题。但是Host这个头有点小例外。 上面这个代码,Host设置了没有用呀,没有用 原因在于:老外认为Host这个安全级别这么销魂的属性,不应该让我们韭菜随随便便通过Header.Set来设置,而是应该通过Url来获取。 但是我们有时候 就是要设置,老外:不,你不需要。 我们:劳资就需要 老外:那么设置,request.Host值吧。。。。。。。。 于是上面的代码 应该改成 req.Host="xxxxx" ---------------------------------------- 如果你用的是fasthttp,那么设置的时候要这样 req:=fasthttp.AcquireRequest() defer fasthttp.ReleaseRequest(req) req.Header.SetMethod("xxxxx") req.SetRequestURI(url) req.SetHost("xxxxx") //这一步要写在SetRequestURI 方法后面 |
|
|