IE请求无响应,服务器报异常字符-RFC7230/3986的解决办法
今天写代码的时候,遇到了服务器报异常字符-RFC7230/3986这种错误,查阅种种文章,无果,最后发现一个大神给出了解决办法
客户端:IE
服务器:tomcat
问题:有些链接打不开,客户端显示空白或者HTTP400错误请求
分析:发现出错的链接均系直接带参数的GET,而且部分参数为中文串,作了两个尝试:a)把整个url拷贝到FF中,可以正常访问;b)把中文串改为其他英文字母数字,可以正常访问
定位:中文编码问题 处理:将GET方法直接写的中文串修改为form提交,或者将可能有中文的模板替换变量,在客户端用encodeURI方法处理,即修改格式类似"aaa.jspa=中文"的链接串为"aaa.jspa=" + encodeURI("中文") 检验:通过,所有浏览器显示正常
附:
服务器端异常stacktrace: Error parsing HTTP request header Note: further occurrences of HTTP header parsing errors will be logged at DEBUG level. java.lang.IllegalArgumentException: Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986
atorg.apache.coyote.http11.InternalInputBuffer.parseRequestLine(InternalInputBuffer.
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.
at
at
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.
at