版本:Tomcat 9.0.6
問題:訪問HostManager頁面出現 Access Denied 錯誤
403 Access Denied You are not authorized to view this page. By default the Host Manager is only accessible from a browser running on the same machine as Tomcat. If you wish to modify this restriction, you'll need to edit the Host Manager's context.xml file. If you have already configured the Host Manager application to allow access and you have used your browsers back button, used a saved book-mark or similar then you may have triggered the cross-site request forgery (CSRF) protection that has been enabled for the HTML interface of the Host Manager application. You will need to reset this protection by returning to the main Host Manager page. Once you return to this page, you will be able to continue using the Host Manager application's HTML interface normally. If you continue to see this access denied message, check that you have the necessary permissions to access this application. If you have not changed any configuration files, please examine the file conf/tomcat-users.xml in your installation. That file must contain the credentials to let you use this webapp. For example, to add the admin-gui role to a user named tomcat with a password of s3cret, add the following to the config file listed above. <role rolename="admin-gui"/> <user username="tomcat" password="s3cret" roles="admin-gui"/> Note that for Tomcat 7 onwards, the roles required to use the host manager application were changed from the single admin role to the following two roles. You will need to assign the role(s) required for the functionality you wish to access. admin-gui - allows access to the HTML GUI admin-script - allows access to the text interface The HTML interface is protected against CSRF but the text interface is not. To maintain the CSRF protection: Users with the admin-gui role should not be granted the admin-script role. If the text interface is accessed through a browser (e.g. for testing since this interface is intended for tools not humans) then the browser must be closed afterwards to terminate the session.
通過查看英文的報錯:If you wish to modify this restriction, you'll need to edit the Host Manager's context.xml file.
打開webapps,打開\tomcat\apache-tomcat-9.0.6\webapps\host-manager\META-INF\context.xml
參考:https://www.cnblogs.com/luoruiyuan/p/6518508.html的博客,做了以下的修改。
1 <Context antiResourceLocking="false" privileged="true" > 2 <Valve className="org.apache.catalina.valves.RemoteAddrValve" 3 allow="^.*$" /> 4 <Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionFilter\$LruCache(?:\$1)?|java\.util\.(?:Linked)?HashMap"/> 5 </Context>
將127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1這里的正則表達式修改為所有人都可以訪問后,重啟Tomcat再在另外一個瀏覽器IE打開還是出現403錯誤,並沒有解決問題,於是只得再次閱讀英文的報錯,以及提示信息:
If you have not changed any configuration files, please examine the file conf/tomcat-users.xml in your installation. That file must contain the credentials to let you use this webapp. For example, to add the admin-gui role to a user named tomcat with a password of s3cret, add the following to the config file listed above. <role rolename="admin-gui"/> <user username="tomcat" password="s3cret" roles="admin-gui"/>
所以在路徑\tomcat\apache-tomcat-9.0.6\conf\tomcat-users.xml 下增加一個admin-gui role
1 <role rolename="manager-gui"/> 2 <role rolename="admin-gui"/> 3 <user username="tomcat" password="sakura" roles="manager-gui,admin-gui"/>
重啟Tomcat,再次刷新頁面,完美解決問題:)
小結:
這次換用Tomcat 9 出現問題並沒有照搬網上的解決方法,而是根據報錯的情況,參考英文文檔去解決問題,所以遇到問題首先想到的應該是根據報錯的情況,嘗試着先單獨的去解決問題,而不是照本宣科的生搬硬套網上的解決辦法,這個很重要🌚。ps:(英文水平真的有待提高/😊)
2018-04-12 01:23:30