0

我有一些代码在我的开发机器上运行一个常规的 mac 运行 tomcat 并 HttpServletRequest.getRequestURI() 返回一个完全编码的 uri。

然而,在运行 apache-tomcat-7.0.32(与我的开发机器相同的版本)的 Solaris 中,我看到解码的逗号“,”和括号“(”,“)”,而不是编码返回的其余字符串。换句话说,这HttpServletRequest.getRequestURI()给了我一个部分编码的值。

任何想法为什么会这样?

4

2 回答 2

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 回答
0

原来这是我们在 Solaris 中使用的 Tomcat/Java 版本中的一个错误。更新似乎解决了。

于 2013-03-19T19:51:35.460 回答