如何在http get请求中设置标头?

Posted

技术标签:

【中文标题】如何在http get请求中设置标头?【英文标题】:How to set headers in http get request? 【发布时间】:2012-10-03 13:52:28 【问题描述】:

我在 Go 中做一个简单的 http GET:

client := &http.Client
req, _ := http.NewRequest("GET", url, nil)
res, _ := client.Do(req)

但是我在doc中找不到自定义请求头的方法,谢谢

【问题讨论】:

【参考方案1】:

如果你想设置多个标题,这比编写 set 语句更方便。

client := http.Client
req , err := http.NewRequest("GET", url, nil)
if err != nil 
    //Handle Error


req.Header = http.Header
    "Host": []string"www.host.com",
    "Content-Type": []string"application/json",
    "Authorization": []string"Bearer Token",


res , err := client.Do(req)
if err != nil 
    //Handle Error

【讨论】:

【参考方案2】:

注意http.Request header中的“Host”不能通过Set方法设置

req.Header.Set("Host", "domain.tld")

但可以直接设置:

req.Host = "domain.tld":

req, err := http.NewRequest("GET", "http://10.0.0.1/", nil)
if err != nil 
    ...


req.Host = "domain.tld"
client := &http.Client
resp, err := client.Do(req)

【讨论】:

救命答案!!【参考方案3】:

Go 的 net/http 包有很多 functions that deal with headers。其中有Add、Del、Get 和Set 方法。 Set的使用方式是:

func yourHandler(w http.ResponseWriter, r *http.Request) 
    w.Header().Set("header_name", "header_value")

【讨论】:

w 是什么类型? @EswarYaganti 您如何发送标头?你得到一个r *http.Request 并在w http.ResponseWriter 中返回一些东西。所以可能是因为您要返回标头,您需要将它们写入响应编写器。 w 是回复作者。你觉得这合乎逻辑吗? 原发帖人说他想“自定义request标头”。您的示例自定义了 response 标头。【参考方案4】:

请求的Header 字段是公开的。你可以这样做:

req.Header.Set("name", "value")

【讨论】:

以上是关于如何在http get请求中设置标头?的主要内容,如果未能解决你的问题,请参考以下文章

在 NodeJS 中设置请求标头

在 axios 中设置授权标头

如何在 Angular 2 Http Observable 请求中设置间隔

在 Angular2 HTTP POST 中设置 JSON 请求标头

在groovy post请求中设置标头

尽管在 Flask 中设置了响应标头,但 CORS 错误