【发布时间】:2020-09-25 05:04:57
【问题描述】:
我的自定义控制器中有一个URI 映射,如下所示:
http://localhost:8080/abc/{id}
现在,对于id 中的正常值,它不会造成任何问题。
当 id 包含 # 时,内容会被修剪。
例如:对于id = 123#qqq,则@PathVariable 变为123
如何解决这个问题?
【问题讨论】:
-
#是一个特殊字符。你需要 uri 转义它。 -
基本上,类似
index.html#abc的意思是index.html,id 为abc。查询字符串也是如此。 -
“#”不是一个锚点...资源中的一个位置,就像网页上的一个位置。?所以它被剥离了,因为它不是资源本身规范的一部分。也许这足以成为逃避它的理由。
-
路径变量中的
/也一样(解释)。虽然对于 URL 参数,可以在这里使用URLEncoder.encode(pathVar, "UTF-8"),但我肯定会避免使用有问题的字符。 -
这是 URI 和 HTTP 工作方式的基础,与 Spring 无关。如果您检查“网络”选项卡,您会发现您的浏览器甚至没有传输该部分。
标签: java spring spring-restcontroller