【问题标题】:Why HttpServletRequest truncates url input on a # character?为什么 HttpServletRequest 在 # 字符上截断 url 输入?
【发布时间】:2018-03-27 14:51:54
【问题描述】:

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

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

`localhost:8080/hash/asdfgh#jkl`

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

【问题讨论】:

  • 尝试在控制器路径中使用正则表达式

标签: java spring servlets spring-web


【解决方案1】:

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

RFC2396 确实声明了:

当使用 URI 引用对 标识的资源,可选的片段标识符,与 由交叉线(“#”)字符组成的 URI,由附加的 参考信息由用户代理解释后 检索操作已成功完成。因此,它不是 URI 的一部分,但通常与 URI 结合使用。

【讨论】:

  • 那么显然没有机会完全从服务器端读取参数?
  • 带有哈希编号。但如果这对您很重要,为什么不将信息作为参数传递呢?
猜你喜欢
  • 2014-05-20
  • 2012-01-21
  • 2013-09-23
  • 1970-01-01
  • 1970-01-01
  • 2015-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多