0

Tomcatを実行している通常のMacの開発マシンでいくつかのコードを実行しており HttpServletRequest.getRequestURI() 、完全にエンコードされたURIを返します。

ただし、apache-tomcat-7.0.32 (私の開発マシンと同じバージョン) を実行している Solaris では、返された残りの文字列をエンコードするのではなく、デコードされたコンマ "," と括弧 "(" , ")" が表示されます。つまり、HttpServletRequest.getRequestURI()部分的にエンコードされた値が得られます。

これはなぜですか?

4

2 に答える 2

0

Solaris で使用していた Tomcat/Java のバージョンのバグであることがわかりました。更新は修正されたようです。

于 2013-03-19T19:51:35.460 に答える
0

仕様によると、Web コンテナーは URI をデコードしません。つまり、URLがエンコードされているかどうかにかかわらず、そのまま表示されます

  String getRequestURI()

        Returns the part of this request's URL from the protocol name up to the query string in the first line of the HTTP request. The web container does not decode this String. For example:
        First line of HTTP request  Returned Value
        POST /some/path.html HTTP/1.1       /some/path.html
        GET http://foo.bar/a.html HTTP/1.0      /a.html
        HEAD /xyz?a=b HTTP/1.1      /xyz 

参照: http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletRequest.html#getRequestURI%28%29

于 2013-02-07T11:43:14.113 に答える