`
housen1987
  • 浏览: 340577 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

iframe跨域传值超过2M的问题解决

    博客分类:
  • HTML
阅读更多

使用iframe进行传值时,如果采用URL的方式传递,则最大只能传递大约2k的数据,超过这个长度就会被截断了,那么是否可以采用post的方式传值呢?答案是可以的,我们可以采用js创建一个form表单,并将此form提交到iframe上,这样就能做到打破2k数据的限制。

 

<iframe id="frame1" name="frame1" src="" style="display:none"></iframe>
<script>
var tranVal = function(){
	document.getElementById("frame1").style.display = "block";
	var postForm = document.createElement("form");
	postForm.method = "post";
	postForm.action = "http://localhost:8080/test/getdata.jsp";
	postForm.target = "frame1";//用来将数据提交到frame1上
	
	var input = document.createElement("input");
	input.type = "hidden";
	input.name = "username";//这个是传值的名称,要记住
	var strA = "1234567890";
	//循环500000次后,保证字符串的大小大于2M
	for(var i=0;i<500000;i++) strA+= "1234567890";
	input.value = strA;
	postForm.appendChild(input);
	document.body.appendChild(postForm);
	postForm.submit();
	//用完之后,不要忘记删掉
	postForm.removeChild(input);
	document.body.removeChild(postForm);
}
</script>
<button onclick="tranVal()">
	传递值
</button>

 

还需要注意2个问题: 

1 tomcat下post不能超过2M的问题

这个需要将tomcat的配置文件server.xml修改一下:

 

<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" maxPostSize="0"/>

 maxPostSize为0时,表示不用限制长度。

2 跨域的问题

跨域不影响iframe的post传值,发送方的tomcat无需更改,只是需要将接收方的tomcat的maxPostSize修改为0即可。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics