安卓微信7.0.7的header传带下划线参数接收异常,7.0.6正常,怎么解决?
发布于 5 年前 作者 jcheng 8791 次浏览 来自 官方Issues

安卓微信7.0.7的header传下划线参数接收异常,nginx已配置underscores_in_headers on,还是无效。7.0.6正常,微信的IOS

3 回复

你好,不建议这么用。

下划线在 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也正常

回到顶部