背景:
WEB服务在公司内部服务器上,使用nginx做透明代理,OA区访问发现WEB服务返回No XSRF Header;
在服务器内部本地curl 不过nignx发现可以:
CSRF的一般防护策略:
1、限制referer请求来源
2、增加字段token验证
这次的WEB服务使用的在headers增加了在token进行验证。
原因:
问题原因在于nginx默认会忽略掉headers中_线标识符字段头
解决:
知道问题就简单了:
方法一:不用下划线
把下划线_改成其他的,如sign_val改成sign-val
方法二:nginx增加配置项
nginx默认request的header的那么中包含’_’时,会自动忽略掉。
在nginx里的nginx.conf配置文件中的http部分中添加如下配置:
underscores_in_headers on; (默认 underscores_in_headers 为off)
增加nginx配置后。reload重新访问生效。
参考信息:
https://blog.csdn.net/shidebin/article/details/86133762