表单get方式长度问题

    今天碰到个很严重的表单get方式提交数据过长的问题.

    这个问题是客户现场发现的,跟银行交互的时候从银行返回的数据不正常.奇怪的是在IE7运行正常,在IE6就出问题了.

    本来银行返回的内容应该是正常的数据.但是分析了数据后,发现他们犯了个很致命的错误,get方式提交的url太长了,

我粗略的看了看,至少有4000个字节,简直太离谱了.

 

   我曾今也犯过get方式的错误,用struts的dispatchAction的时候,如果表单的method采用默认的方式(即get方式),dispatchAction的"method=xxx"会被get覆盖掉.本意是想传www.xxx.com/aaa?mehtod=init,实际传了只是:www.xxx.com/aaa.这种情况,采用post就没问题了.

  

    google了些资料

1)URL不存在参数上限的说法。该问题实际是IE对URL有长度限制的问题。
2)HTTP协议规范也没有对URL长度进行限制。这个限制是特定的浏览器及服务器对它的限制。IE对URL长度的限制是2083字节(2K+35)。对于其他浏览器,如Netscape、FireFox等,理论上没有长度限制,其限制取决于操作系统的支持。[参1]
3)“可变长度的参数通过URL方式传递”实际是说提交表单时使用了GET方法,而不是POST方法。造成这种潜在错误的是使用GET方法提交表单数据。因为GET方法将数据放在URL里传递给服务器处理。
4)注意这个限制是整个URL长度,而不仅仅是你的参数值数据长度。
5)既然是IE对URL长度的限制,那么不管是GET方法还是POST方法都存在这个限制。
(关于FORM的GET和POST方法具体内容请参考相关资料[参2])  
建议:
1)了解应用程序所在的环境,如Web应用的浏览器、服务器环境,了解其特定的参数限制情况。
2)提交复杂数据尽量使用POST方法。注意FORM不写method属性时默认是使用GET方法。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值