3

Javascript から Java Web アプリへの http DELETE要求を実行します。Web アプリはJerseyを使用して URL をディスパッチします。トリッキーなことは、スラッシュを含むパスパラメーターを使用していることです (例: "XX/6666" )。Jetty (maven プラグイン) で実行すると正常に動作しますが、実稼働サーバー ( Tomcat ) で実行すると動作しません。つまり、404が発生します。

スラッシュは %2F を使用してエスケープされるため、リクエスト URL は次のようになります

消去http://.../4776/shipmentOrders/XX%2F6666

これは http 仕様で許可されていますか? Jetty と Tomcat がこれらを異なる方法で解釈する可能性はありますか?

4

2 に答える 2

10

Tomcat (バージョン 5、6、および 7 だと思います) は、ディレクトリ トラバーサル攻撃を防ぐために、パスでの %2f の使用を意図的に防ぎます。org.apache.tomcat.util.buf を設定することで、この保護をオフにできると言われています。UDecoder.ALLOW_ENCODED_SLASH=真。私はこれを個人的にテストしていませんが、ネット上の他の人がこれを解決したと主張しているのを見ます. ただし、Tomcat の前にある Web サーバーも URL をインターセプトして書き換え、%2f をスラッシュに自動的にデコードする可能性があることに注意してください。

参照: http://tomcat.apache.org/tomcat-7.0-doc/config/systemprops.html

于 2012-08-21T22:17:12.363 に答える
2

はい、両方に対して: 許可されますが、一部のサーバーがセキュリティ上の理由でリクエストを拒否する可能性があります。

于 2012-07-27T08:05:04.877 に答える