我需要在我的应用服务器 Apache Tomcat 6.0 上禁用 PUT、DELETE 和 TRACE HTTP 请求。
到目前为止,我搜索过的所有其他来源都将我引向了httpd.conf中的 limit 参数,因此我事先说明我没有使用 Apache Web Server,并且请求直接由 Tomcat 处理,并且所以图片中没有httpd.conf。
请建议我应该如何在Tomcat上做到这一点?
我需要在我的应用服务器 Apache Tomcat 6.0 上禁用 PUT、DELETE 和 TRACE HTTP 请求。
到目前为止,我搜索过的所有其他来源都将我引向了httpd.conf中的 limit 参数,因此我事先说明我没有使用 Apache Web Server,并且请求直接由 Tomcat 处理,并且所以图片中没有httpd.conf。
请建议我应该如何在Tomcat上做到这一点?
在您的 WEBINF 中,添加您可以添加安全约束:
<security-constraint>
<web-resource-collection>
<web-resource-name>Forbidden</web-resource-name>
<url-pattern>/blah/*</url-pattern>
<http-method>PUT</http-method>
<http-method>DELETE</http-method>
<http-method>TRACE</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>empty_role</role-name>
</auth-constraint>
</security-constraint>
或者,您可以执行以下两项操作:
在 server.xml 中,编辑<connector>
元素,添加一个属性:allowTrace="false"
。然后编辑 DefaultServlet:$CATALINA_HOME/conf/web.xml
<servlet>
<servlet-name>default</servlet-name>
<servlet-class>
org.apache.catalina.servlets.DefaultServlet
</servlet-class>
<!-- blah blah blah -->
<init-param>
<param-name>readonly</param-name>
<param-value>true</param-value>
</init-param>
</servlet>
答案在于 servlet 规范。在查看 servlet 的 API 时:http: //java.sun.com/products/servlet/2.5/docs/servlet-2_5-mr2/javax/servlet/http/HttpServlet.html你会看到不同的方法处理不同类型的 HTTP 请求。此外,还有一个很棒的特性叫做过滤器,它可以用来围绕 servlet 和过滤器包装一些代码。
所以解决方案是: