背景:
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