我正在尝试在Tomcat级别禁用TRACE和OPTIONS方法。我一直在尝试不同的方法来实现此目的,但是在测试过程中的所有情况下都得到相同的结果。我对telnet(或任何网络)不是很熟悉,但是我在cmd提示符下的测试方式是“ telnet localhost 8080”,然后粘贴TRACE / HTTP / 1.0,然后按Enter键两次。任何帮助是极大的赞赏。
1.) 不可更改 在CATALINA_HOME / CONF / web.xml中
2.)在CATALINA_HOME / conf / web.xml中添加安全约束
<security-constraint> <web-resource-collection> <web-resource-name>All Access</web-resource-name> <url-pattern>/*</url-pattern> <http-method>OPTIONS</http-method> <http-method>TRACE</http-method> </web-resource-collection> <auth-constraint /> </security-constraint>
3.)在CATALINA_HOME / conf / server.xml的Connector标记中添加allowTrace =“ false”
4.)在CATALINA_HOME / conf / server.xml的Connector标签中添加allowTrace =“ false”并将xml添加到CATALINA_HOME / conf / web.xml的Default Servlet标签中
<init-param> <param-name>readonly</param-name> <param-value>true</param-value> </init-param>
所有案例的结果
跟踪/ HTTP / 1.0(找不到404)
选项/ HTTP / 1.0(找不到404)
TRACE /(Web服务名称)HTTP / 1.0(找到302)
选项/(网络服务名称)HTTP / 1.0(找到302)
每次更改后,Tomcat都会通过发出 shutdown.bat 和 startup.bat来 重新启动。我显然做错了(测试/配置),因为无论更改什么,我都得到相同的结果。我读到我应该期待405错误来表示http方法已被禁用。
当您没有部署ROOT Web应用程序时,这些结果是预期的。如果您遵循重定向,则会获得对有效资源的302响应,您将开始看到405响应。
这取决于Tomcat执行各种检查的顺序,以及Mapper是处理请求的第一批组件之一(它确定将请求路由到的Host,Web应用程序和Servlet)。
前两个返回404,因为您没有默认的Web应用程序。Mapper会尽早返回404(以提高效率),因此您不会得到检查TRACE是否已启用的代码。
第二个2返回302s,因为映射器再次将/ web-service重定向到/ name-web-service /。再次,这种情况尽早发生,并且再次发生在检查是否启用TRACE之前。
如果使用存在的路径进行测试,则应该看到期望的405。