先将异常信息贴出:

该问题是tomcat进行http request解析的时候报的错,网上的解决办法主要是修改Tomcat的server.xml,在<Connector port="8080"protocol="HTTP/1.1"connectionTimeout="20000" redirectPort="8443" />的配置中增加maxHttpHeaderSize的配置。

<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" maxHttpHeaderSize="8192" />

如果调整了maxHttpHeaderSize还是解决不了,这时候需要设置前端页面的数据格式,需要将method 的属性设置为POST

但是这种方法对我的代码并未奏效。

-----------------------------------------------------------------------------------------------------------------

经过分析,发现此问题与请求参数有关。当在浏览器中访问时 URL中带有特殊字符,如花括号冒号时,就会出现这个错误。例如:http://localhost:8080/index.do?{id:123},在有些情况下,即使没有花括号,只要带有"?+参数"就会报此异常

比如本文所遇该问题是在使用Layer.js的弹出窗体功能时出现的问题

(代码中的*代码隐藏的代码,下同)

js代码:

          var url = **.getWebRootPath()+ "/imagePair/toMakeRegister?cmdUuid="
+ cmdUuid+ "&projectId="+**.getProjectId(); layer.open({
type : 2,
area : [ '1000px', '480px' ],
fixed : false,
maxmin : true,
skin : 'layui-layer-nobg',
btn : [ '确定', '取消' ],
content : url, yes : function(index, layero) { *****
}

  java代码:

@RequestMapping("/toMakeRegister")
public String toMakeRegister(HttpServletRequest request,Model model){
String cmdUuid = request.getParameter("cmdUuid");
String projectId = request.getParameter("projectId");
model.addAttribute("cmdUuid", cmdUuid);
model.addAttribute("projectId" ,projectId);*/
return "modules/data/imagefusionPair";
}

  原先的思路是通过后台转接得到子页面的url地址,然后使用layer.js组件实现将该url指向的页面作为子页面弹出。由于在url中有带?的参数,所以出现了本文开头的异常。于是,改变url形式,去掉后面的参数,将其通过其他方式进行父子界面的传参。

因此又引出了另一个问题,如何使用layer.open()的时候进行父子界面传参?

本文解决办法:直接上代码

父js:

		var url = *.getWebRootPath()+ "/imagePair/toMakeRegister";
var projectId=*.getProjectId();
var para={
"cmdUuid":cmdUuid,
"projectId":projectId
}; parent.layer.open({
type : 2,
area : [ '1000px', '480px' ],
fixed : false, // 不固定
maxmin : true,
skin : 'layui-layer-nobg', // 没有背景色
btn : [ '确定', '取消' ],
content : url,
success: function(layero, index) {
$(layero).find('iframe'[0].contentWindow.getParentData(para); },
yes : function(index, layero) { ****
}

  

子页面js: 添加获取父页面数据的方法

function getParentData(para){
cmdUuid=para.cmdUuid;
projectId=para.projectId;
}

  

关键的是

success: function(layero, index) {
$(layero).find('iframe'[0].contentWindow.getParentData(para); },

“success”定义的回掉函数是在子页面加载完成之后执行的,

$(layero).find('iframe'[0].contentWindow获取子页面窗体对象,然后直接调用在子页面中定义的getParentData(para)方法;
---------------------------------------------------------------------------------------------------

Error parsing HTTP request header Note: further occurrences of HTTP header parsing errors...java.lang.IllegalArgumentException: Invalid character found in the request target. The valid characters are的更多相关文章

  1. Tomcat v7.0 java.lang.IllegalArgumentException: Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986

    十二月 , :: 下午 org.apache.coyote.http11.AbstractHttp11Processor process 信息: Error parsing HTTP request ...

  2. 解决springboot项目请求出现非法字符问题 java.lang.IllegalArgumentException:Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986

    springboot版本: 2.1.5 最近使用springboot搭建了一个App后台服务的项目,开发接口的时候在本机使用postman工具做请求测试,请求返回一直很正常,但是在前端开发使用h5请求 ...

  3. java.lang.IllegalArgumentException: Invalid character found in the request target. The valid charact

    线上环境中部署的 Tomcat 项目,出现部分页面无法打开的情况,但本地环境是好的.经过排查发现,本地 Tomcat版本为 7.0.77,而线上版本为 7.0.88.报错的具体描述为java.lang ...

  4. IE浏览器连接WebSocket报错:java.lang.IllegalArgumentException: Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986

    在项目开发中整合了WebSocket,本来没什么问题了,但是偶尔发现用IE浏览器打开web端不能推送消息,因为PC端与服务器建立连接失败了.网上查了很多资料, 又看了看源码,都不对症:又怀疑是Spri ...

  5. 后台报错java.lang.IllegalArgumentException: Invalid character found in the request target.

    报错: Note: further occurrences of HTTP header parsing errors will be logged at DEBUG level. java.lang ...

  6. java.lang.IllegalArgumentException: Invalid character found in the request target.

    java.lang.IllegalArgumentException: Invalid character found in the request target. http参数存在特殊字符: 特殊字 ...

  7. java.lang.IllegalArgumentException: Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986

    微信小程序前后台使用get方式传参时报错如图.但在微信开发平台和苹果测试都没事,在安卓手机上就报这个错,猜想原因是get传递了汉字的原因. 尝试了下在后台输出从前台获取的参数,但是后台什么也没有获取到 ...

  8. 信息: Error parsing HTTP request header Note: further occurrences of HTTP header parsing errors will be logged at DEBUG level

    四月 , :: 下午 org.apache.coyote.http11.AbstractHttp11Processor process 信息: Error parsing HTTP request h ...

  9. [Java Web]Error parsing HTTP request header Note: further occurrences of HTTP header parsing errors

    手机客户端向服务器提交Http请求时,Tomcat抛出错误: 十二月 31, 2014 2:32:45 下午 org.apache.coyote.http11.AbstractHttp11Proces ...

随机推荐

  1. 设置Intel网卡以抓取报文的vlan tag

    一.实验环境 1.ThinkPad T450 Notebook 2.Notebook网卡Intel I218-V 二.设置步骤 1."设备管理器" -> "Inte ...

  2. es6零基础学习之项目目录创建(一)

    和大家分享一下在学习es6的过程中所积累的东西,也希望更多的朋友能够互相学习 首先创建项目目录 打开你的命令行,什么文件下都可以,大家请随意,我自己用的git,输入 mkdir es6 创建一个完整的 ...

  3. Springmvc+Spring+Mybatis实现员工登录注册功能

    ssm实现用户注册以及登录功能..转载请标明出处  http://www.cnblogs.com/smfx1314/p/smfx1314.html 前端bootstrap 所使用的IDE是eclips ...

  4. 多个 (li) 标签如何获取获取选中的里面的某个特定值??

    两种方式: 1/.根据div中的class属性 指定ul 找到选中的单个li $(".f_dingdan ul li").click(function(){    var a=$( ...

  5. 修改Oracle【12C】字符集

    select userenv('language') from dual; //查看系统字符集编码 select * from nls_database_parameters where parame ...

  6. Fork/Join-Java并行计算框架

    Java在JDK7之后加入了并行计算的框架Fork/Join,可以解决我们系统中大数据计算的性能问题.Fork/Join采用的是分治法,Fork是将一个大任务拆分成若干个子任务,子任务分别去计算,而J ...

  7. LINUX 笔记-文件属性相关命令

    chgrp:该命令用于改变文件所属用户组 chown:该命令用于改变文件的所有者 chmod:该命令用于改变文件的权限 -R:进行递归的持续更改,即连同子目录下的所有文件都会更改  

  8. web.xml中<init-param>报错

    报错信息如下图: 控制台报错:严重: Servlet /*** threw load() exceptionjava.lang.ClassNotFoundException: MyApplicatio ...

  9. phalcon——验证

    一个完整的使用实例:(验证模型数据) use Phalcon\Mvc\Model; use Phalcon\Mvc\Model\Validator\Email as EmailValidator; u ...

  10. 【前端】主流API-promise解析,js基础。

    前言 在js领域,promise出现的时间已经很久了,从jquery的$.get().done().fail() 这样的API开始,到现在的es6默认支持的new Promise(),它的出现无疑使异 ...