Jetty:我们如何允许HttpServletRequest.GetParameter()解析%符号?

时间:2014-10-22 22:24:40

标签: java http servlets encoding jetty

处理语法的网址

  

http://foo.com?bar=%test%

jetty抛出IllegalArgumentException,表示它不是有效的十六进制值。

我们尝试将字符编码更改为UTF-16,但仍然无法解析%。有没有办法允许'%'在HttpPServletRequest接口中由getParameter或getParameterMap函数解析?

getParameter的预期输出(" bar")="%test%"

1 个答案:

答案 0 :(得分:0)

URL / URI中的符号%是用于处理URL / URI中的Percent Encoded个字符的保留字符。 - 见RFC3986 Section 2.1

Jetty看到的是%字符,然后必须使用接下来的2个字符te来解码您想要的UTF-8字节,在您的测试用例中会导致无效的百分比编码

最基本的,您的示例网址/ URI是“格式错误的URI”。 (尝试在JavascriptPythonPerl

中对其进行解码

另请注意,所有URL / URI处理都是UTF-8(在不同的编码方案中解析URL / URI是标准和规范)