Go语言:HTTP响应头字段字母大小写控制

如果使用Header().Set()方法,HTTP响应头字段会自动将首字母和“-”后的第一个字母转换为大写,其余转换为小写,如 "accept-encoding" 转换为 "Accept-Encoding"。这个转换规则在绝大多数情况是没有问题的,但是有些字段如“P3P”,按约定应该是全大写的,如果转成“P3p”,可能会引起前端异常。如果想要控制字母的大小写,官方文档提供了一种解决办法就是直接操作Header哈希表(map[string][]string),“To use non-canonical keys, assign to the map directly.”,示例如下:

func handleFunc(urlstr string, handler Handler) {
        f := func(w http.ResponseWriter, r *http.Request) {
                //logger.Info(r.URL.RequestURI())
                w.Header().Set("Cache-Control", "no-cache, no-store")
                header := w.Header()
                header["P3P"] = []string{"CP=\"NOI DEV PSA PSD IVA PVD OTP OUR OTR IND OTC\""}
                w.Header().Set("Pragma", "no-cache")
                w.Header().Set("Connection", "keep-alive")
                handler.Run(w, r)
        }
        http.HandleFunc(urlstr, f)
}

响应头如下:

HTTP/1.1 200 OK
Cache-Control: no-cache, no-store
Connection: keep-alive
Content-Type: text/plain
P3P: CP="NOI DEV PSA PSD IVA PVD OTP OUR OTR IND OTC"
Pragma: no-cache
Date: Fri, 30 Apr 2021 01:54:55 GMT
Content-Length: 0

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值