安卓微信7.0.7的header传带下划线参数接收异常,7.0.6正常,怎么解决?
安卓微信7.0.7的header传下划线参数接收异常,nginx已配置underscores_in_headers on,还是无效。7.0.6正常,微信的IOS
安卓微信7.0.7的header传下划线参数接收异常,nginx已配置underscores_in_headers on,还是无效。7.0.6正常,微信的IOS
你好,不建议这么用。
下划线在 HTTP Header 里是非法字符串
因为历史约定导致 HTTP Request Header 的名字不允许包含下划线 _ 字符,否则(大多数)服务端程序会判断这个 Header 不合法。 比如 Nginx 如果没有开启 underscores_in_headers on; 配置,在转发请求的过程中就会丢弃不合法的 Header。
设置header的值
axios.interceptors.request.use( config => { // console.log(config) let chis_token = localStorage.getItem('chis_token'); if (chis_token) { config.headers.common['CHIS_TOKEN'] = chis_token; } intercep(config) if(config.baseURL == URL.health_sys || config.baseURL == URL.health) { if (config.data) { config.data = Util.encrypt(config.data) } else { if(config.method == 'get' && config.params) { let str = '' for (let item in config.params) { str += item + '=' + config.params[item] + '&' } str = str.substring(0, str.length - 1) config.params = { data: Util.encrypt(str) } } } } return config; }, error => { return Promise.reject(error); }); |
调用接口
_checkSign(param) { checkSign(param).then(res => { console.log(res) })}, |
后台java获取
String CHIS_TOKEN = request.getHeader("CHIS_TOKEN"); |
当安卓微信7.0.7调用时,CHIS_TOKEN获取为空,其他版本正常,微信IOS也正常