如何使Apache Tomcat接受DELETE方法

我正在研究一个RESTful Web服务项目,我正在使用Apache Tomcat和JAX-RS。

我想接受来自客户端的DELETE请求,但每当我从Advanced REST客户端Chrome插件发送DELETE请求时,它都会给出响应代码403 Forbidden。

那么我怎样才能让Apche Tomcat接受DELETE请求呢?


答案 1

Tomcat因为我的CORS过滤器而阻止了DELETE方法。

我需要在我的 web 文件中注册新的筛选器.xml。下面是一个非常宽松的示例:

<filter>
    <filter-name>CorsFilter</filter-name>
    <filter-class>org.apache.catalina.filters.CorsFilter</filter-class>
    <init-param>
        <param-name>cors.allowed.headers</param-name>
        <param-value>Accept,Accept-Encoding,Accept-Language,Access-Control-Request-Method,Access-Control-Request-Headers,Authorization,Connection,Content-Type,Host,Origin,Referer,Token-Id,User-Agent, X-Requested-With</param-value>
    </init-param>
    <init-param>
        <param-name>cors.allowed.origins</param-name>
        <param-value>*</param-value>
    </init-param>
    <init-param>
        <param-name>cors.allowed.methods</param-name>
        <param-value>GET, POST, PUT, DELETE, OPTIONS, HEAD</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>CorsFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

答案 2

还有一个建议,仔细检查调用的 URL,并确保它指向预期的 servlet。

当我在代码中错误地键入服务URL时,我得到了同样的错误。我有当我需要时,修复错别字解决了错误。你会期望一个404,但是在Tomcat上使用DELETE,你会得到一个403。api/roles/Service/rolesapi/rolesService/roles


推荐