私は RESTful Web サービスのプロジェクトに取り組んでおり、Apache Tomcat と JAX-RS を使用しています。
クライアントから DELETE リクエストを受け入れたいのですが、高度な REST クライアント Chrome プラグインから DELETE リクエストを送信すると、応答コード 403 Forbidden が返されます。
では、どうすればApche TomcatにDELETEリクエストを受け入れさせることができますか?
私は RESTful Web サービスのプロジェクトに取り組んでおり、Apache Tomcat と JAX-RS を使用しています。
クライアントから DELETE リクエストを受け入れたいのですが、高度な REST クライアント Chrome プラグインから DELETE リクエストを送信すると、応答コード 403 Forbidden が返されます。
では、どうすればApche TomcatにDELETEリクエストを受け入れさせることができますか?
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>
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>
パラメータdebug
とlistings
はデフォルトで tomcat にロードされますが、デフォルトreadonly
は true であり、GET と POST のみが使用可能であることを意味します。
利用可能な他のパラメーターは次のとおりです。
ログに記録されたメッセージのデバッグ詳細レベル このサーブレットによって。[0] fileEncoding 静的リソースの読み取りに使用されるエンコーディング [プラットフォームのデフォルト] 読み込み時の入力バッファサイズ(バイト単位) 提供されるリソース。[2048] リストが存在する場合、ディレクトリ リストを生成する必要があります。 このディレクトリにウェルカムファイルがありませんか? [間違い] 警告: 多くのディレクトリのリスト エントリは遅くなる可能性があり、消費する可能性があります サーバー リソースのかなりの割合。 output 書き込み時の出力バッファサイズ(バイト単位) 提供されるリソース。[2048] readonly このコンテキストは「読み取り専用」なので、HTTP PUT や DELETE などのコマンドは、 拒否されましたか?[真実] readmeFile ディレクトリとともに表示するファイル コンテンツ。[ヌル] sendfileSize 使用するコネクタが sendfile をサポートしている場合、これは の最小ファイル サイズを KB で表します。 どの sendfile が使用されるか。マイナスを使う sendfile を常に無効にする値。[48] useAcceptRanges Accept-Ranges ヘッダーを含めるかどうか 必要に応じて応答しますか?[真実]