ava獲取headers的代碼如下:
// 獲取http-header里面對應的簽名信息 Enumeration<?> headerNames = request.getHeaderNames(); logger.info("request headerNames : {}", JSONParser.toJSONString(request.getHeaderNames())); logger.info("request sys_sign header : {}", JSONParser.toJSONString(request.getHeader("sys_sign"))); // 簽名的key String key = null; // 簽名內容 String signValue = null; while (headerNames.hasMoreElements()) { // 獲得請求頭部的Key key = (String) headerNames.nextElement(); if ("sys_sign".equals(key)) { signValue = request.getHeader(key); break; } }
代碼沒問題,本地可以獲取到,nginx獲取不到。
查了半天,發現跟nginx的配置有關系,nginx會默認去除屬性名包含下划線“_”的屬性。
解決方法,修改nginx的配置文件 nginx.conf ,在配置http的部分修改如下:
underscores_in_headers on; ##(默認值是off)
建議不要使用包含下划線屬性名 . . .