tomcat 请求出现RFC 7230 and RFC3986的错误,解决办法

1.在tomcat的server.xml的Connector中增加下面俩属性

relaxedPathChars
relaxedQueryChars

tomcat 请求出现RFC 7230 and RFC3986的错误,解决办法_第1张图片

    

可以解决对于这些特殊字符的解析,如果想要增加新的直接增加即可

2.在js中使用encodeURI方法

直接使用encodeURI方法对url进行处理即可,在我这边使用的情况下,适用于所有情况.

3.修改tomcat的jar包

以上两种情况是我在网上大量搜索找出来的还算行之有效的方法,其他的进行修改都是无济于事,但是我们这边的需求是url中会含有中文。
方法一将会不适用,不可能把所有的汉字都加进去,而且我也没有进行尝试中文加入relaxedPathCharsrelaxedQueryChars中是否有效,
方法二虽然比较实用,而且可以对付所有情况,但是需要修改大量的js的文件,是真的烦啊

因此,我尝试着去看了一下tomcat对于这部分的源码,找到了对这部分的匹配和校验
tomcat 请求出现RFC 7230 and RFC3986的错误,解决办法_第2张图片
具体位置在Http11InputBuffer类中的parseRequestLine的方法下,有兴趣的可以试着下载源码,调试一下看看效果,于是我就
在这里插入图片描述
直接注释掉,然后找到编译的class
tomcat 请求出现RFC 7230 and RFC3986的错误,解决办法_第3张图片
复制进tomcat的jar中,jar包在
tomcat 请求出现RFC 7230 and RFC3986的错误,解决办法_第4张图片tomcat的lib文件夹下的tomcat-coyote.jar
然后,完美运行
这是我已经修改好得tomcat-coyote.jar

你可能感兴趣的:(tomcat)