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

回到顶部