go - 将未更改的小写 header 添加到 golang http 请求

标签 go

我正在尝试在 golang 程序中设置全小写标题,而 CanonicalMIMEHeaderKey 将第一个字母大写。我正在使用的 API 目前只采用全小写的这个特定 header 。目前无法更改它。有没有办法覆盖它?

http://golang.org/pkg/net/textproto/#CanonicalMIMEHeaderKey

例如,我要添加的 header 是:

req.Header.Add("myheader", "myheadervalue")

但结果是:

req.Header.Add("Myheader", "myheadervalue")

有人可以帮忙吗?

谢谢

最佳答案

我没有找到规避这个问题的方法,但是如果你真的必须使用小写的 header 名称,那么你可以通过使用小写键创建你自己的 http.Header 来解决这个问题.示例 ( on play ):

import "fmt"
import "strings"
import "net/http"

// ...

req, _ := http.NewRequest("GET", "http://foo", nil) 
req.Header.Add("myheader", "myheadervalue")

lowerCaseHeader := make(http.Header)

for key, value := range req.Header {
    lowerCaseHeader[strings.ToLower(key)] = value
}

req.Header = lowerCaseHeader

关于go - 将未更改的小写 header 添加到 golang http 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24945806/

相关文章:

go - 使用 Go 从文本文件中读取数据

go - 限制 VS Code for Go 仅下载 v 1.11 的包

: bulk Get operation example

ssl - 中间证书与 Go 的私钥不匹配

go - 在 Golang 中使用字节数组附加/创建 SVG

go - 如何检查结构的特定属性是否为空?

go - 无法安装 go 包 go.net/html

arrays - 在go错误中使用 slice 和数组

go - 什么标志 fmt.Printf 递归地跟随指针?

go - 如何使用带有 GoLang 的编码器编码整个 http.Request?