我有一些代码在我的开发机器上运行一个运行tomcat的常规mac
HttpServletRequest.getRequestURI()
返回一个完全编码的uri。
但在Solaris中运行apache-tomcat-7.0.32(与我的dev机器版本相同)
我看到解码的逗号“,”和括号“(”,“)”,而不是编码返回的其余字符串。换句话说,HttpServletRequest.getRequestURI()
给了我一个部分编码值。
为什么会这样?
答案 0 :(得分: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
答案 1 :(得分:0)
原来这是我们在Solaris中使用的Tomcat / Java版本中的一个错误。更新似乎已经解决。