问题来源:
我将一个vue项目部署到ngixn上,然后发现后台一直拿不到前端请求的自定义请求头,我的请求头为User_Access_token,可以看是是一个判断用户是否登录的token,但我发现前端通过控制台发下请求头中存在这个我自定义的请求头,但是后端就是找不到。然后我在本地将项目运行发现又可以拿到,百思不得其解。
弄了n久,想到我将项目部署到nginx上,请求都是由nginx代理转发,是不是在这个过程中出现问题,我百度一下发现原来nginx在转发请求的时候,对于自定义的请求头有一定限制,
通过百度发现nginx在处理请求头是有一个变量`underscores_in_headers`,该变量控制是否允许请求头包含下划线“_”,默认不允许,所以我们的自定义请求头就没了
在ngixn 中配置underscores_in_headers on;就可以允许自定义请求头包含下划线。
http {
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
underscores_in_headers on; //nginx default don't carry youself headers of contain "_",this is open
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;