代码如下:
for k, value := range MetaMap {
	k = "Meta-" + k
	header.Set(k, value)
}
其中 header ==> http.Header{}, MetaMap ==> map[string]string 且只有一个键值对: Password: admin123 ,但是 Debug 发现 header 中却是 Meta_password ,而不是 Meta-Password 。有人遇到过这种问题吗
Debug 是在远程主机上运行的,本地和远端代码一模一样,本地通过 git push 到 GitHub ,远端直接 git pull ,且两端的编译命令相同,go 版本相同。本地却没有这样的问题。
|  |      1learningman      2022-11-26 16:10:41 +08:00 via Android 你远端是不是套网关了 | 
|  |      2yaott2020 OP @learningman 没有,两端的配置文件一模一样,请求地址也一样,都是 Cloudflare ,而且情况是发生在发生请求前。应该和网关无关 | 
|  |      3learningman      2022-11-26 16:13:36 +08:00 via Android 既然是 cf ,那可以看下 cf 的 trace 吧,看看 cf 传的是啥 | 
|  |      4yaott2020 OP 源站用 nginx ,根据 nginx"特性",默认会把 header 中含有"_"过滤掉,造成后端收不到含有"_"的 header 字段信息 | 
|  |      5yaott2020 OP @learningman cf 不会有问题的,有问题的话本地应该也请求失败才对 | 
|      6iamzuoxinyu      2022-11-26 16:16:42 +08:00 via Android 浏览器上看的头吗?有可能浏览器显示的是这样,实际上传输的就是小写和下划线。 | 
|  |      7yaott2020 OP @iamzuoxinyu 我这个是客户端请求,没有使用浏览器,请求前看了 request 里的 header ,就是有问题的 | 
|  |      8rozbo      2022-11-26 16:39:17 +08:00 这种 header 不规范,可能因为 nginx 的版本导致各种意想不到的差异,规范的做法是 X-USERNAME 。(虽然这个规范后来被废弃了,但是实际场景中还是有很多问题) | 
|  |      9yaott2020 OP @rozbo header 确实没有一个统一强有力的规范,首字母大小写的规范不一样,每段首字母大小写的规范也不一样,甚至用横杠 /下划线分隔多段的规范也不一样。 | 
|  |      10horsley      2022-11-28 08:45:02 +08:00 header.set 会经过 mime 标准化,就是会换成横杠的,不想被转换要用 header[k] = []string{v} 文档其实说的很清楚的 Set sets the header entries associated with key to the single element value. It replaces any existing values associated with key. The key is case insensitive; it is canonicalized by textproto.CanonicalMIMEHeaderKey. To use non-canonical keys, assign to the map directly. | 
|      11GopherDaily      2022-11-28 12:18:50 +08:00 // Set sets the header entries associated with key to the // single element value. It replaces any existing values // associated with key. The key is case insensitive; it is // canonicalized by textproto.CanonicalMIMEHeaderKey. // To use non-canonical keys, assign to the map directly. func (h Header) Set(key, value string) { textproto.MIMEHeader(h).Set(key, value) } | 
|  |      12yaott2020 OP @horsley 我的意思是 key 是横杠,设置 header 后 header 里面变成下划线。 | 
|      13ql562482472      2022-11-28 16:59:39 +08:00 spring 里面用 spring 工具取 header 时,不区分大小写,-或_都能取出来 | 
|  |      15yaott2020 OP @horsley 还是没懂我的意思,我知道 set 函数会自动格式化 key ,但是我这里的 key 进去是横杠,set 之后变成了下划线,难道函数有这样的实现吗 | 
|  |      16lysS      2022-11-29 13:44:49 +08:00 网关是真的搞,有次把我们的 sql 改了;查了小半周 |