Hitachi

Cosminexus V11 アプリケーションサーバ 機能解説 互換編


6.18.1 URIのデコード機能の概要

URIのデコード機能を使用すると,アプリケーションサーバでは,リクエストURIのサーブレットパスおよび追加のパス情報に含まれるURLエンコードされた文字列がデコードされます。ただし,コンテキストパスはデコードされません。

デコードされたURIを使用しないWebアプリケーションを実行するときは,URIのデコード機能を使用しないように設定するか,Webアプリケーション側で対応する必要があります。

URIのデコード機能の使用時に影響があるServlet API,デコードされた文字列を使用する機能,デコード時に使用される文字コード,および文字列のデコードと正規化の実行順序を次に記述します。

〈この項の構成〉

(1) URIのデコード機能の使用時に影響があるServlet API

URIのデコード機能を使用する場合,javax.servlet.http.HttpServletRequestインタフェースの次のメソッドでは,デコードされたURIが戻り値となります。

ただし,getRequestURIメソッドおよびgetRequestURLメソッドでは,デコードされていないURLが戻り値となります。

(2) デコードされた文字列を使用する機能

URIのデコード機能を使用する場合,次に示すマッチング処理で,デコードされた文字列が使用されます。

ただし,コンテキストパスはデコードされないで,元の文字列のまま扱われるため,コンテキストルートと一致しない場合は「404 Not Found」が戻り値となります。

また,アプリケーションサーバの次の機能では,デコード後の文字列でのマッチングは行われません。

(3) デコード時に使用される文字コード

URIのデコード機能を使用する場合,デコード時に使用される文字コードはUTF-8です。

(4) 文字列のデコードと正規化の実行順序

クライアントから送信されたリクエストURIで,マッチングに利用されるURLは,デコードされたあとで正規化されます。