1

jetty が提供する Web サービスがあります。不正な文字を含む URL をフィルタリングするにはどうすればよいですか?

リクエスト URL に不正な文字が含まれている場合、一部のリターン情報を制御できません。

実際、URLが無効な場合に特定の情報を返したい. 例: URL を検証するためにアプリケーションにフィルターを追加しました。違法な場合は、定義された情報を返します。

ただし、「%adsasd」などの一部の URL はフィルタリングできません。jetty で処理されているようです。

curl -v -X PUT -u user:password ' http://myip.com:8080/%adsasd '

*   Trying 127.0.0.1...
* Connected to 127.0.0.1 (127.0.0.1) port 8080 (#0)
* Server auth using Basic with user 'user'
> PUT /%adsasd HTTP/1.1
> Authorization: Basic YWRtaW46MTIzNDU2
> User-Agent: curl/7.35.0
> Accept: */*
> Host:127.0.0.1:8080
>  < HTTP/1.1 400 Bad Request 
   < Content-Length: 0
* Server Jetty(9.0.6.v20130930) is not blacklisted 
   < Server: Jetty(9.0.6.v20130930) < 
* Connection #0 to host 127.0.0.1 left intact
4

1 に答える 1

0

Jetty からのエラー応答

HTTP/1.1 400 Bad Request

Jetty がそれを不正な URL として検出し、拒否したことを示します。

これをカスタマイズする方法については、主にこの特定のリクエストの処理の早い段階で発生するため、非常に注意が必要です。

この種のエラー ( 400 Bad Request) は、未加工の着信 http 要求の解析中に発生します。サーバー コンテナーがどのコンテキストと通信するかを判断しようとするよりもかなり前です。

特定の webapp コンテキストでカスタム エラー ハンドラーを使用して、この種の基本的な http エラーを処理する方法はありません。サーバーは、どのコンテキストと通信するかをまだ把握していないためです。

また、サーバー側で (グローバル レベルであっても) このエラー メッセージをカスタマイズする方法はありません。

このような機能が必要な場合は、機能リクエストを提出してください

于 2014-09-28T14:51:17.953 に答える