13

私は RESTful Web サービスのプロジェクトに取り組んでおり、Apache Tomcat と JAX-RS を使用しています。

クライアントから DELETE リクエストを受け入れたいのですが、高度な REST クライアント Chrome プラグインから DELETE リクエストを送信すると、応答コード 403 Forbidden が返されます。

では、どうすればApche TomcatにDELETEリクエストを受け入れさせることができますか?

4

5 に答える 5

14

CORS フィルターが原因で、Tomcat が 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>
于 2014-08-21T21:35:41.877 に答える
-1

Tomcat で他の http メソッドを有効にするには、web.xml で構成します。

<servlet>
    <servlet-name>default</servlet-name>
    <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
    <init-param>
        <param-name>debug</param-name>
        <param-value>0</param-value>
    </init-param>
    <init-param>
        <param-name>listings</param-name>
        <param-value>false</param-value>
    </init-param>
    <init-param>
        <param-name>readonly</param-name>
        <param-value>false</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

パラメータdebuglistingsはデフォルトで tomcat にロードされますが、デフォルトreadonlyは true であり、GET と POST のみが使用可能であることを意味します。

利用可能な他のパラメーターは次のとおりです。

     ログに記録されたメッセージのデバッグ詳細レベル     
                         このサーブレットによって。[0]                          

     fileEncoding 静的リソースの読み取りに使用されるエンコーディング   
                         [プラットフォームのデフォルト]                             

     読み込み時の入力バッファサイズ(バイト単位)      
                         提供されるリソース。[2048]                

     リストが存在する場合、ディレクトリ リストを生成する必要があります。
                         このディレクトリにウェルカムファイルがありませんか? [間違い]
                         警告: 多くのディレクトリのリスト    
                         エントリは遅くなる可能性があり、消費する可能性があります            
                         サーバー リソースのかなりの割合。   

     output 書き込み時の出力バッファサイズ(バイト単位)     
                         提供されるリソース。[2048]                

     readonly このコンテキストは「読み取り専用」なので、HTTP           
                         PUT や DELETE などのコマンドは、               
                         拒否されましたか?[真実]                              

     readmeFile ディレクトリとともに表示するファイル    
                         コンテンツ。[ヌル]                               

     sendfileSize 使用するコネクタが sendfile をサポートしている場合、これは  
                         の最小ファイル サイズを KB で表します。     
                         どの sendfile が使用されるか。マイナスを使う    
                         sendfile を常に無効にする値。[48]        

     useAcceptRanges Accept-Ranges ヘッダーを含めるかどうか    
                         必要に応じて応答しますか?[真実]         

于 2014-09-27T01:33:16.237 に答える