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张图片

 最近换了一个新的Tomcat ,版本是Tomcat8,编写了一个项目之后,发现这个tomcat无法传递JSON数据,这让我很郁闷呀,各种给google各种百度,最后无济于事,就想,会是工具的问题吗?我用IDEA开发的,各种检查看看是不是自己配置错了,最后没有查出问题,继续往下,会是Tomcat问题吗?我是从官方文档下载的呀,我就重新下载了一份,又下载了一份版本相对低一点的,最后配置好跑起来,结果也是不行,那是ubuntu开发的问题吗,之后打开window系统,使用eclipse开发了一份,然后在window下跑起来确认无误的跑起来,拿到编译文件复制到ubuntu下,跑起来不可以,那确定肯定不是工具的问题,紧接着我把这份编译后的文件放到服务器上,服务器也是ubuntu系统的,跑起来没问题,难道是ubuntu16和之前的版本http协议不同,Google,baidu,,,,最后也没发现问题,最后排除所有可能性,最后又回到tomcat上,我把服务器的tomcat复制一份到到本地系统,问题解决,这又可能是最近官方tomcat更新出问题了。

对于这个问题,更准确的说实际上不是tomcat出了问题,而是tomcat9.0相对于tomcat 8.0对URL做出了一些更严格的限制RFC3986文档规定,Url中只允许包含英文字母(a-zA-Z)、数字(0-9)、-_.~4个特殊字符以及所有保留字符。

解决办法的话,简单点的就是 复制一份之前能用的tomcat到你的本地, 但是显然不是长久之计,既然tomcat9.0已经对URL做出了限制,所以即使是练习,之后的url的中文和一些不符合的符号都先在客户端进行URLEncode编码,再将URL拼接成一个整体后再发送出去。最后服务端在进行解码。

  示例:

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

你可能感兴趣的:(Linux,Tomcat)