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

首先把问题挂上

 最近换了一个新的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拼接成一个整体后再发送出去。最后服务端在进行解码。

  示例:


  • 9
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 13
    评论
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值