我在 Ubuntu 14.04 LTS 上使用捆绑的 Tomcat 和 Nginx 代理重新安装了 JasperReports Server 6.2,以便我可以访问https://mydomain.xyz/jasperserver https://mydomain.xyz/jasperserver。它大部分有效,但我无法管理用户和角色。如果我绕过 Nginx 直接访问 Tomcathttp://123.123.123.123:8080/jasperserver http://123.123.123.123:8080/jasperserver,一切都很完美。日志表明:
2016-02-28 19:44:08,024 错误 CsrfGuard,http-nio-8080-exec-3:44 - 潜在的跨站点请求伪造 (CSRF) 攻击被阻止(用户:,ip:127.0.0.1,uri:/jasperserver /flow.html,错误:请求中缺少必需的令牌)
这与这个旧问题完全相同:在 nginx 后面运行 jasperserver:潜在的 CSRF 攻击 https://stackoverflow.com/questions/17920949/running-jasperserver-behind-nginx-potential-csrf-attack。但我已经尝试了建议的两种缓解措施,但仍然不起作用。
- 我尝试设置
underscores_in_headers on;
,首先在刚刚http
,然后在server
,然后在两者中。
- 当这不起作用时,我删除了下划线
JASPER_CSRF_TOKEN
and OWASP_CSRFTOKEN
in WEB-INF/esapi/Owasp.CsrfGuard.properties
我重新启动服务器只是为了确保所有内容都已清除并重新启动,但仍然无法正常工作。
我正在寻求有关解决方案的建议和/或有关如何更好地诊断问题的指导。我是 Jasper 新手,我的 Java/Tomcat 技能很生疏。
我知道这现在已经很旧了,但是从 JasperReports Server 7.X 开始,可能还有更早的版本:
当通过 Nginx 代理到 JasperReports Server 时,underscores_in_headers on;
设置必须在 nginx 配置中。
从讨论中看来here https://stackoverflow.com/questions/22856136/why-underscores-are-forbidden-in-http-header-names如果没有此设置,JasperReports Server 使用的默认 OWASP_CSRFGUARD 标头将被 Nginx 静默删除。我遇到过的其他代理和负载均衡器都没有这样做。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)