最近新增需求,發(fā)現(xiàn)客戶端請求種header傳值給服務(wù)器,竟然沒獲取到。調(diào)試后發(fā)現(xiàn)在本地是可以獲取到前端header傳的參數(shù)的,但是部署到服務(wù)器獲取的就是null(服務(wù)器地址用nginx做了代理)
原因:
查源碼才發(fā)現(xiàn)nginx對header name的字符做了限制,默認 underscores_in_headers 為off,表示如果header name中包含下劃線,則忽略掉,部署后就獲取不到。
解決:
在header里不要用 “_” 下劃線,可以用駝峰命名或者其他的符號(如減號-)代替。nginx默認忽略掉下劃線,可能是規(guī)避參數(shù)和nginx的參數(shù)關(guān)鍵字重復了,比如下面的結(jié)構(gòu)體指針。

image.png
由于參數(shù)名字是我們可控的,這種概率不大。所以還是傾向于在nginx里的 nginx.conf文件中配置http的部分添加 : underscores_in_headers on;(默認值是off)