`
leo_dream
  • 浏览: 134038 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

表单get方式长度问题

    博客分类:
  • java
阅读更多

    今天碰到个很严重的表单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方式读取

    这就是关于Servlet表单GET和POST方式读取的基本知识。理解并熟练运用这些技术,开发者能够创建功能丰富的Web应用程序,处理用户提交的各种数据。在实际项目中,还需要考虑错误处理、安全性、性能优化等更多方面,以...

    GET方法表单

    在《电子政务教学实践平台实验教程》中,GET方法可能被应用在诸如“成绩查询”、“进度跟踪”等页面,学生可以通过点击链接或填写表单,以GET方式向服务器发送请求,获取个人的成绩、实验进度等信息。而教师在管理...

    使用get方式提交表单在地址栏里面不显示提交信息

    需要注意的是,由于GET方式的特性,表单数据的可见性和长度限制(通常在2KB左右),对于包含敏感信息或大量数据的表单,推荐使用POST方式提交。同时,为了提高用户体验,合理设计表单验证和错误提示也是必不可少的。...

    GET请求方式

    虽然GET请求简单易用,但也有其局限性和安全性问题: 1. 参数暴露:由于GET请求的参数直接在URL中,可能导致敏感信息泄露,如密码、身份证号等。 2. 安全性:由于GET请求可能会被浏览器记录、缓存,甚至被第三方拦截...

    平台和web简单demo 3,表单提交 form get

    - 如果表单包含文件上传,应使用POST请求,因为GET请求有长度限制。 7. **调试与测试**: 开发过程中,开发者可以通过浏览器的开发者工具查看网络请求,了解GET请求的详细信息。还可以使用curl命令行工具模拟GET...

    台和web简单demo 3,表单提交 form get

    表单的提交方式有两种:GET和POST。在这个例子中,我们关注的是GET请求。 GET请求是HTTP协议中最常见的方法之一,用于向服务器请求资源。当用户点击表单的提交按钮时,浏览器会将表单数据附加到URL后面,以问号(?...

    GET方式和POST方式.pdf

    - GET方式受到URL长度限制,通常不超过2KB,不适合大量数据传输。 - POST方式没有明显的大小限制,可以传输大量数据,如文件上传。 5. **字符编码** - GET默认使用ASCII字符集,对于非ASCII字符可能会导致乱码...

    C# post方式提交Form表单

    本篇文章将深入探讨如何在C#中通过POST方式提交Form表单,包括其原理、步骤和实际代码示例。 一、POST提交表单的基本原理 POST是HTTP协议中的一个方法,用于向服务器发送数据,特别是当数据量较大或者包含敏感信息...

    tomcat GET请求与POST请求

    GET请求的大小受到URL长度限制,一般不超过2KB,这意味着它不能携带大量数据。此外,GET请求是幂等的,意味着多次执行同一请求,结果应始终相同,不会改变服务器状态。 POST请求则更复杂,主要用于提交数据以创建或...

    重难点之GET方式和POST方式.pdf

    GET方式的主要用途是从服务器上获取数据。它将表单中提交的数据直接附加到URL后面,以“?”分隔,多个参数之间用“&”连接。由于这些数据明文显示在URL中,GET方式的安全性较低,容易被记录在浏览器历史、缓存、日志...

    jsp中post和get传输方式的区别

    ### jsp中post和get传输方式的区别 在Web开发领域,特别是使用Java Server Pages (JSP) 进行网页开发时,GET与POST是两种最常见的HTTP请求方法。这两种方法各有其适用场景及特点,理解它们之间的区别对于提高网站的...

    Android登陆get方式和post方式

    **一、GET方式** GET是HTTP协议中最常用的方法之一,用于从服务器获取资源。在登录场景中,如果采用GET方式,用户输入的用户名和密码会作为URL的一部分传递。例如,一个简单的GET请求可能看起来像这样: ``` ...

    Html表单和Server表单

    例如,使用`Request.QueryString["控件名"]`获取GET方式提交的表单值,`Request.Form["控件名"]`适用于POST方式,而`Request["控件名"]`则同时支持两种方式。编码方面,常见的有GB2312、GBK和Unicode,其中Unicode...

    ajax POST 与GET提交的区别

    这种请求方式通过HTTP消息体发送数据,不暴露在URL中,因此适合于那些需要更改服务器状态的操作,如登录、提交表单等。 #### 二、GET与POST的主要区别 接下来,我们将从多个方面详细分析GET和POST之间的区别: 1....

    C# 使用Get和Post请求获取数据

    这种方式限制了请求的长度,因为URL有长度限制,同时也意味着GET请求的数据对用户可见,不太适合传输敏感信息。在C#中,我们可以使用`HttpClient`类的`GetStringAsync`方法来发送GET请求并获取返回的字符串数据。 `...

    简单的表单提交代码

    - GET方式:表单数据会附加在URL后面,可见且有长度限制,适合不涉及敏感信息的简单查询。 - POST方式:数据隐藏在HTTP请求体中,无明显长度限制,更适合传输大量或敏感数据。 3. **JavaScript处理表单** 提供的...

    get、post登录

    此外,GET请求还有长度限制,通常不超过2KB,所以如果登录数据量较大,GET方法将无法胜任。 2. POST方法: POST方法则更适合用于提交数据,包括登录这种涉及敏感信息的场景。用户填写的登录信息会被封装在请求体中...

    Get还是Host好

    - GET请求的数据量通常受到URL长度的限制,大多数Web服务器限制URL长度不超过2KB。因此,当需要发送大量数据时,GET不是最佳选择。 - POST请求没有数据量的限制,因此适合发送大量的数据。但需要注意的是,即使...

    Form表单中method=post/get两种数据传输的方式的区别

    在HTML表单中,`method`属性用于定义数据提交的方式,主要有两种选择:`GET`和``POST`。这两种方法在数据传输过程中与HTTP协议的GET和POST方法紧密相关,各自具有不同的特点和用途。 1. GET方法: - GET主要用于从...

Global site tag (gtag.js) - Google Analytics