我们使用Nginx进行httpsstream量卸载,代理到在端口8080上运行的本地安装的jasperserver(5.2)。
internet ---(https/443)---> Nginx ---(http/8080)---> tomcat/jasperserver
直接在其端口上访问jasperserver时,一切都很好。 当通过Nginx访问服务时,一些function被破坏(例如,在jasperserver UI中编辑用户),jasperserver日志具有这样的条目:
CSRFGuard: potential cross-site request forgery (CSRF) attack thwarted (user:%user%,ip:%remote_ip%,uri:%request_uri%,error:%exception_message%)
经过一些debugging,我们发现这个原因:
在它的标准configuration中,Nginx不会转发包含下划线名称的请求头。 Jasperserver(和Owasp框架)默认使用下划线来传输csrf标记(分别为JASPER_CSRF_TOKEN和Owasp_CSrftOKEN )。
使用哪个python模块访问Windows 7的代理设置?
如何configurationAtom使用代理文件(pac)设置?
无法从Java中的Nginx反转代理获得远程IP
Nginx反向代理设置,连接到上游时,768个worker_connections是不够的
Nginx的docker作为本地的nodejs代理
解决scheme是要么:
server { ... underscores_in_headers on;
jasperserver:更改jasperserver-pro/WEB-INF/esapI/Owasp.CsrfGuard.properties令牌configuration名称
另见这里:
标题variables在生产中丢失
http://wiki.Nginx.org/HttpCoreModule#underscores_in_headers
与Ubuntu的Android SDK设置代理
木偶,wget和代理
Rstudio和shiny的服务器代理设置
Python socket.accept()没有收到任何连接请求
如何在多个地点重新使用Nginx代理设置
自己回答 – 希望这对其他人也有用处
我有Jasperserver 5.5 AWS AMI的这个问题
更具体:
/var/lib/tomcat7/webapps/jasperserver-pro/WEB-INF/esapI/Owasp.CsrfGuard.properties
更改:
org.owasp.csrfguard.TokenName=JASPER_CSRF_TOKEN org.owasp.csrfguard.SessionKey=JASPER_CSRF_SESSION_KEY
至:
org.owasp.csrfguard.TokenName=JASPERCSrftOKEN org.owasp.csrfguard.SessionKey=JASPERCSRFSESSIONKEY
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。