栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

使用 nginx 反向代理,后端无法获取到 header 中存入的信息

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用 nginx 反向代理,后端无法获取到 header 中存入的信息

解决办法

nginx 默认对 header 的 key 不支持下划线,需要在 http{ } 模块添加如下配置来支持下划线:修改后记得重启 nginx

http {
	···
    underscores_in_headers on;
	···
	service {}
}
业务场景

jwt 单点登录业务场景,在前端获取用户信息时,将 token 信息放到请求头 header 中,如下:

// 拦截器:将cookie中的token放进header中
request.interceptors.request.use(
  config => {
    if (cookie.get("token")) {
      config.headers['guli_token'] = cookie.get("token");
    }
    return config;
  },
  error => {
    return Promise.reject(error)
  }
)

可以看到请求头中的 header 信息:

经过 nginx 反向代理请求到后端,此时后端获取到的 token 信息为 null:

    server {
        listen       8888;
        server_name  localhost;
		client_max_body_size 1024m;

	location /ucenter/ {
            proxy_pass   http://127.0.0.1:8085/;
        }
    }

后端代码:

@RestController
@CrossOrigin
@RequestMapping("/member")
public class MemberController {

    @Resource
    private MemberService memberServiceImpl;

    
    @GetMapping("/getMemberInfo")
    public R getMemberInfo(HttpServletRequest request) {
        System.out.println(request.getHeader("guli_token"));	// null
    }
}

在 nginx 配置文件中添加配置:

http {
    include       mime.types;
    default_type  application/octet-stream;
    underscores_in_headers on;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';
	···
}

再次请求,可以正常获取到 token 信息

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/964246.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号