【发布时间】:2017-04-14 08:18:36
【问题描述】:
我有以下网址
http://context_path/info/abc/def
像这样被转换
http://context_path/info/abc%2Fdef
我的控制器映射在哪里:
@RequestMapping(value = "/info/{id}", method = RequestMethod.GET)
这里 'id' 包含正斜杠 (/)。因此,当我点击 URL 时,我得到 400 Bad Request。
我知道可能的解决方案
- 将 tomcat 设置为允许正斜杠。
- 使用 URL 编码。
- 使用
@RequestParam代替@PathVariable。
但上述解决方案对我来说是不可能的。
问。是否有任何其他解决方案,例如(使用正则表达式或更改映射或其他任何东西)来解决这个问题? 还有tomcat如何正确处理其他特殊字符 ('.' , ''' , ':' , ',') 并且控制器被击中但不是 '/' .
试过但没用:
1) @RequestMapping(value = "/info/{id:.*}", method = RequestMethod.GET)
2) @RequestMapping(value = "/info/{id}/**", method = RequestMethod.GET)
3) @RequestMapping(value = "/info/**", method = RequestMethod.GET)
【问题讨论】:
-
但是为什么你的 id 值有个斜线呢?
-
@TechBreak 我知道它错了。但我正在处理旧值,我无法修改它们。
-
@user3632894 尝试了这两种方法,但都不起作用
-
@SuhasD 澄清一下,你有能力在客户端处理 url 然后调用服务器吗?
标签: java spring rest tomcat bad-request