Tomcat The valid characters are defined in RFC 7230 and RFC 3986

Tomcat The valid characters are defined in RFC 7230 and RFC 3986_第1张图片

就是严格按照 RFC 3986规范进行访问解析,而 RFC 3986规范定义了Url中只允许包含英文字母(a-zA-Z)、数字(0-9)、-_.~4个特殊字符以及所有保留字符(RFC3986中指定了以下字符为保留字符:! * ’ ( ) ; : @ & = + $ , / ? # [ ])。传入的参数中有"{"不在RFC3986中的保留字段中,所以会报这个错。

参考请求url:

http://192.168.40.66:8060/RequestUpdateAcceptanceInfo/getdata?projectItemId=AJTZBS3AAPAAA&JsonArr=[{%22id%22:%22AJTZBS3MAO0AA%22,%22isSupervisionOK%22:1,%22isThirdpartOK%22:2},{%22id%22:%22AJTZBS3MILGAA%22,%22isSupervisionOK%22:1,%22isThirdpartOK%22:2},{%22id%22:%22AJTZBS3MQIMAA%22,%22isSupervisionOK%22:1,%22isThirdpartOK%22:1},{%22id%22:%22AJTZBS3MYLAAA%22,%22isSupervisionOK%22:1,%22isThirdpartOK%22:1},{%22id%22:%22AJTZBS3NIIEAA%22,%22isSupervisionOK%22:1,%22isThirdpartOK%22:1},{%22id%22:%22AJTZBS3NQNUAA%22,%22isSupervisionOK%22:1,%22isThirdpartOK%22:1}]&_=1524538147808

可以看出以上,在url地址栏中 传递了一个json数组 导致控制台出现异常 请求状态码为400(http 400错误 请求无效)

或者直接使用post,因为get是从url地址栏中取的 遇到{}这个格式 会导致过不了tomcat RFC规范 但是post是从域取数据 所以采用post请求是可取的

解决办法有很多方式,具体如下几种:

1. 遵循7230 and RFC 3986规范,对于非保留字字符做转义操作

2. 使用保留字字符

3. 降低tomcat版本

4. 将json数据进行urlencode编码

部分参考至:https://www.cnblogs.com/dashuai01/p/6894972.html


你可能感兴趣的:(个人)