我有一个命令行脚本(实际上是一个git post-checkout hook),它通过执行cURL来重新加载我的Solr应用程序:
http://localhost:8080/manager/html/reload?path=/solr
自从我升级到Ubuntu 13.04后,它现在失败了,它在升级之前曾经工作过。
问题的原因是我的新版Tomcat(6.0.35)有一些新的CSRF保护,它现在返回403 Access Denied
。
如何解决问题并绕过CSRF保护?
更多信息:
我的/etc/tomcat6/tomcat-users.xml
文件:
<?xml version='1.0' encoding='utf-8'?>
<role rolename="manager"/>
<user username="tomcat" password="secret" roles="manager"/>
</tomcat-users>
Configuring Manager Application access in tomcat的文档提到了一些新的经理角色,但是我的错误特别提到单个“经理”角色目前仍然存在(我尝试了其他角色但没有成功)。
答案 0 :(得分:0)
(当我写这个问题时,我找到了答案。)我不需要转到 HTML 应用程序,而是需要转到“纯文本界面”
即。而不是
http://localhost:8080/manager/html/reload?path=/solr
使用:
http://localhost:8080/manager/reload?path=/solr
事实证明:
HTML接口受CSRF保护,但文本和JMX接口不受保护。
这符合名为“manager-script”的新角色。为了确保我的应用程序将来有效,我更改了/etc/tomcat6/tomcat-users.xml
文件:
<?xml version='1.0' encoding='utf-8'?>
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<user username="tomcat" password="secret" roles="manager-gui,manager-script"/>
</tomcat-users>