0

我有一个命令行脚本(实际上是一个 git post-checkout 钩子),它通过执行 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>

在 tomcat 中配置管理器应用程序访问的文档提到了一些新的管理器角色,但是我的错误特别提到目前仍然存在单个“管理器”角色(无论如何我尝试了其他角色但没有成功)。

4

1 回答 1

0

(在我写这个问题的时候,我找到了答案。)我不需要卷曲到HTML应用程序,而是需要卷曲到“纯文本”界面”。

即代替

http://localhost:8080/manager/html/reload?path=/solr

利用:

http://localhost:8080/manager/reload?path=/solr

事实证明:

HTML 界面受到 CSRF 保护,但文本和 JMX 界面没有。

这符合称为“经理脚本”的新角色。为了确保我的应用程序将来可以正常工作,我更改了我的/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>
于 2013-09-17T16:50:51.080 回答