springBoot和tomcat项目解析get请求url上的小括号()报400?
url上带小括号()就报400,
转义了还是不行
后台代码
@RequestMapping(value = "/download") public ResponseEntity<Object> download1(@RequestParam String name, @RequestParam String type) {
logger.info(name, type);
return new ResponseEntity<>(HttpStatus.OK);
}
但是如果改成pathVariable就行了
@RequestMapping(value = "/download/{name}") public ResponseEntity<Object> download1(@PathVariable String name, @RequestParam String type) {
logger.info(name, type);
return new ResponseEntity<>(HttpStatus.OK);
}
url上带()就报错,带[]和{}都没问题,我在前端区也发了,普遍认为是后台的问题
https://segmentfault.com/q/1010000043992007
所以问题出在哪里呢?是@RequestParam的问题吗?tomcat是springboot自带的,也没有特殊配置。
回答:
貌似后台也是你写的嘛?换个方法,使用post试试?看看后台日志。你想实现get请求下载嘛》?那你使用文件id
回答:
这个问题可能是Tomcat的安全配置引起的。在Tomcat 7及以上版本里,URL中的一些字符,包括小括号(),被判定为不安全的,包含这些字符的请求会就会被拒绝,返回400错误。
你可以改一下Tomcat的配置来允许这些字符
tomcat.util.http.parser.HttpParser.requestTargetAllow=|(|)
然后,重启Tomcat来让这个配置生效。这样虽然可以,但是会有安全风险。最好别用这个小括号,你可以用的URL编码或者用其他字符代替.
回答:
自己新建的项目,测试了一下带括号木有问题
括号不需要转移,方括号和花括号需要转义
既然 400 了,那就看看浏览器控制台和后端的报错吧
以上是 springBoot和tomcat项目解析get请求url上的小括号()报400? 的全部内容, 来源链接: utcz.com/p/945246.html