为什么HttpServletRequest截断#字符的url输入?

时间:2018-03-27 14:51:55

标签: java spring servlets spring-web

以下servlet读取url path参数。 问题:如果输入包含特殊字符,例如我发现#,则字符串被截断!

@RestController
public class MyServlet {    
    @GetMapping("/hash")
    @ApiIgnore
    public String hash(HttpServletRequest req) {
        String pw = req.getPathInfo(); //asdfgh
    }
}

`localhost:8080/hash/asdfgh#jkl`

问题:我如何原生地传递输入参数?

1 个答案:

答案 0 :(得分:2)

#开始的部分不会发送到/接收到您的servlet 它是仅从客户端(浏览器)使用的信息,而不会使用 URI的一部分

确实RFC2396个州:

  

使用URI引用对其执行检索操作时   标识资源,可选的片段标识符,分隔   由交叉阴影线("#")字符组成的URI由附加组成   用户代理在之后解释的参考信息   检索行动已成功完成。因此,事实并非如此   URI的一部分,但通常与URI结合使用。