部署到服务器后前端传递的token后端接收不到的问题

部署到服务器后前端传递的token后端接收不到的问题

码农世界 2024-06-04 前端 88 次浏览 0个评论

前言:springboot+vue的一个项目,使用了nginx做反向代理

问题:前端传递的token,后端死活都拿不到,导致请求都被拦截器拦截下来,返回未登录的状态码,前端传递的token名字是tt_token,在本地运行的时候是完全没问题的(本地没用nginx做代理),甚至在postman上测试也是可以接收到token的,但是部署到服务器上时(用了nginx做代理),后端就接收不到了。

原因:原来nginx会默认丢弃带有下划线的请求头,下面贴一段官网的解释

Missing (disappearing) HTTP Headers?

If you do not explicitly set underscores_in_headers on;, NGINX will silently drop HTTP headers with underscores (which are perfectly valid according to the HTTP standard). This is done in order to prevent ambiguities when mapping headers to CGI variables as both dashes and underscores are mapped to underscores during that process.

翻译过来就是:NGINX将静默地丢弃带有下划线的HTTP标头,这样做是为了防止在将头映射到CGI变量时出现歧义,因为在该过程中,短划线和下划线都映射到下划线。

解决办法(2选1即可):

1.将请求头统一用中划线代替,例如tt_token改为tt-token

2.在nginx的配置文件中添加这一行代码:underscores_in_headers on;

nginx官网中列出的一些常见的问题以及解释:
https://www.nginx.com/resources/wiki/start/topics/tutorials/config_pitfalls

转载请注明来自码农世界,本文标题:《部署到服务器后前端传递的token后端接收不到的问题》

百度分享代码,如果开启HTTPS请参考李洋个人博客
每一天,每一秒,你所做的决定都会改变你的人生!

发表评论

快捷回复:

评论列表 (暂无评论,88人围观)参与讨论

还没有评论,来说两句吧...

Top