今天碰到个很严重的表单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方法。
分享到:
相关推荐
这就是关于Servlet表单GET和POST方式读取的基本知识。理解并熟练运用这些技术,开发者能够创建功能丰富的Web应用程序,处理用户提交的各种数据。在实际项目中,还需要考虑错误处理、安全性、性能优化等更多方面,以...
在《电子政务教学实践平台实验教程》中,GET方法可能被应用在诸如“成绩查询”、“进度跟踪”等页面,学生可以通过点击链接或填写表单,以GET方式向服务器发送请求,获取个人的成绩、实验进度等信息。而教师在管理...
需要注意的是,由于GET方式的特性,表单数据的可见性和长度限制(通常在2KB左右),对于包含敏感信息或大量数据的表单,推荐使用POST方式提交。同时,为了提高用户体验,合理设计表单验证和错误提示也是必不可少的。...
虽然GET请求简单易用,但也有其局限性和安全性问题: 1. 参数暴露:由于GET请求的参数直接在URL中,可能导致敏感信息泄露,如密码、身份证号等。 2. 安全性:由于GET请求可能会被浏览器记录、缓存,甚至被第三方拦截...
- 如果表单包含文件上传,应使用POST请求,因为GET请求有长度限制。 7. **调试与测试**: 开发过程中,开发者可以通过浏览器的开发者工具查看网络请求,了解GET请求的详细信息。还可以使用curl命令行工具模拟GET...
表单的提交方式有两种:GET和POST。在这个例子中,我们关注的是GET请求。 GET请求是HTTP协议中最常见的方法之一,用于向服务器请求资源。当用户点击表单的提交按钮时,浏览器会将表单数据附加到URL后面,以问号(?...
本篇文章将深入探讨如何在C#中通过POST方式提交Form表单,包括其原理、步骤和实际代码示例。 一、POST提交表单的基本原理 POST是HTTP协议中的一个方法,用于向服务器发送数据,特别是当数据量较大或者包含敏感信息...
- GET方式受到URL长度限制,通常不超过2KB,不适合大量数据传输。 - POST方式没有明显的大小限制,可以传输大量数据,如文件上传。 5. **字符编码** - GET默认使用ASCII字符集,对于非ASCII字符可能会导致乱码...
GET方式的主要用途是从服务器上获取数据。它将表单中提交的数据直接附加到URL后面,以“?”分隔,多个参数之间用“&”连接。由于这些数据明文显示在URL中,GET方式的安全性较低,容易被记录在浏览器历史、缓存、日志...
### jsp中post和get传输方式的区别 在Web开发领域,特别是使用Java Server Pages (JSP) 进行网页开发时,GET与POST是两种最常见的HTTP请求方法。这两种方法各有其适用场景及特点,理解它们之间的区别对于提高网站的...
**一、GET方式** GET是HTTP协议中最常用的方法之一,用于从服务器获取资源。在登录场景中,如果采用GET方式,用户输入的用户名和密码会作为URL的一部分传递。例如,一个简单的GET请求可能看起来像这样: ``` ...
例如,使用`Request.QueryString["控件名"]`获取GET方式提交的表单值,`Request.Form["控件名"]`适用于POST方式,而`Request["控件名"]`则同时支持两种方式。编码方面,常见的有GB2312、GBK和Unicode,其中Unicode...
这种方式限制了请求的长度,因为URL有长度限制,同时也意味着GET请求的数据对用户可见,不太适合传输敏感信息。在C#中,我们可以使用`HttpClient`类的`GetStringAsync`方法来发送GET请求并获取返回的字符串数据。 `...
这种请求方式通过HTTP消息体发送数据,不暴露在URL中,因此适合于那些需要更改服务器状态的操作,如登录、提交表单等。 #### 二、GET与POST的主要区别 接下来,我们将从多个方面详细分析GET和POST之间的区别: 1....
- GET方式:表单数据会附加在URL后面,可见且有长度限制,适合不涉及敏感信息的简单查询。 - POST方式:数据隐藏在HTTP请求体中,无明显长度限制,更适合传输大量或敏感数据。 3. **JavaScript处理表单** 提供的...
此外,GET请求还有长度限制,通常不超过2KB,所以如果登录数据量较大,GET方法将无法胜任。 2. POST方法: POST方法则更适合用于提交数据,包括登录这种涉及敏感信息的场景。用户填写的登录信息会被封装在请求体中...
- GET请求的数据量通常受到URL长度的限制,大多数Web服务器限制URL长度不超过2KB。因此,当需要发送大量数据时,GET不是最佳选择。 - POST请求没有数据量的限制,因此适合发送大量的数据。但需要注意的是,即使...
在HTML表单中,`method`属性用于定义数据提交的方式,主要有两种选择:`GET`和``POST`。这两种方法在数据传输过程中与HTTP协议的GET和POST方法紧密相关,各自具有不同的特点和用途。 1. GET方法: - GET主要用于从...
- **数据大小限制**:GET方法受URL长度限制,因此不适合传输大量数据;而POST方法没有明确的大小限制。 - **缓存机制**:GET请求可以被浏览器缓存,而POST请求则不会被缓存。 - **幂等性**:GET请求是幂等的,多次...