Tomcat 7 不能传参json 解决办法
2018-08-05 07:45:29来源:博客园 阅读 ()
之前项目一直使用tomcat6 但是因为某个原因更换了tomcat 7 发现传递json参数时会出现
Using the protocol="HTTP/1.1" connector (Coyote) After upgrading a site to Tomcat 7.0.73 from 7.0.72 or from anything earlier, a url with an unencoded { or } (ie. http://my.com?filter={"search":"isvalid"} ), now returns a 400 error code and logs the following error message: "INFO: 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"
百度后,尝试了各种办法 ,都没有效果。比如
Tomcat7以上版本不兼容 url中传json字符串,可更换低版本Tomcat(不建议)
可通过JS方法【encodeURIComponent(param)】对参数进行url转码解决,如下:
后来看到一篇博客,建议大家参考 原文:https://blog.csdn.net/aerchi/article/details/77963622
根据rfc规范,url中不允许有 |,{,}等特殊字符,但在实际生产中还是有些url有可能携带有这些字符,特别是|还是较为常见的。在tomcat升级到7以后,对url字符的检查都变严格了,如果出现这类字符,tomcat将直接返回400状态码。
后来有人对此提出了异义,见: https://bz.apache.org/bugzilla/show_bug.cgi?id=60594
经过一番讨价还价,tomcat的开发人员增加一项设置,允许配置在url可以出现的特殊字符,但也仅限于|,{,}三种,见:http://tomcat.apache.org/tomcat-8.0-doc/config/systemprops.html#Other
该项设置在以下版本的tomcat中有效:
- 8.5.x for 8.5.12 onwards
- 8.0.x for 8.0.42 onwards
- 7.0.x for 7.0.76 onwards
解决方法:
找到config/catalina.properties 最后一行,去掉注释#
在最后加一个{}
#tomcat.util.http.parser.HttpParser.requestTargetAllow=| 改为: tomcat.util.http.parser.HttpParser.requestTargetAllow=|{}
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- java环境教程:Tomcat下载,安装,设置为Windows服务,启动 2020-06-09
- Idea实现SpringBoot外置Tomcat的Web项目热部署(包含静态文 2020-06-04
- 【报错】导入项目后报错:Target runtime Apache Tomcat v7. 2020-05-25
- 解决windows下tomcat端口被占用最简单暴力方法 2020-05-25
- Tomcat安装 2020-05-23
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash