分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 网页技术

Tomcat 7 不能传参json 解决办法

发布时间:2023-09-06 02:08责任编辑:郭大石关键词:jsjson

之前项目一直使用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转码解决,如下:

var myUrl = ‘[{"itemId":"2","skuId":""}]‘;
var myOtherUrl ="http://localhost:8080/cart/batchremove?data="+encodeURIComponent(myUrl);

后来看到一篇博客,建议大家参考 原文: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=|{}

  

Tomcat 7 不能传参json 解决办法

原文地址:https://www.cnblogs.com/by-candy/p/9415185.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved