一、问题起因

在某项目释放后Bug统计的附件《释放后问题》里有:

问题
原因
分析
备注

CSV处理时,如果处理的主题数过多,发生URL参数上限的错误;

可变长度的参数通过URL方式传递,会造成这种潜在的错误发生。

1、属于2次发生问题,开发方面没有及时通过checklist等方式向组员传达相关注意事项;
2、测试时没有作大批量数据的测试;

1、作为经验添加至CheckList中,加强组内共享、检查的效果;
2、加强测试点是否完备的检查,重点关注对开发方面共性问题的测试;

通过对模块原有GUI状况确认,进行CSV输出时,输出结果很大的场合,CSV文件的内容不能输出。

没有考虑到POST数据量存在128K的大小限制。

这属于新问题,以前从未遇见过,也没有进行过大规模的数据量测试

已将此类检查列出CheckList中

做为一种经验积累,这些问题、原因及解决办法将被列入Checklist,那么:

第一个问题:URL参数上限的提法准确吗?上限是多少?

第二个问题:为什么POST时数据有限制?限制是128K吗?

二、问题分析

1、第一个:

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方法。

结论(写入Checklist):

对使用GET方法提交数据时,在IE环境下,需要考虑URL长度2083字节的限制。

2、第二个:

1)理论上讲,POST是没有大小限制的。HTTP协议规范也没有进行大小限制。

2)“POST数据量存在128K的大小限制”不够准确,POST数据是没有限制的,起限制作用的是服务器的处理程序的处理能力。

3)对于ASP程序,Request对象处理每个表单域时存在100K的数据长度限制。但如果使用Request.BinaryRead则没有这个限制。对于需要处理超过100K表单域数据的解决办法,请参考后面的[参3]。

4)由这个延伸出去,对于IIS 6.0,微软出于安全考虑,加大了限制[参4]。我们还需要注意:

IIS 6.0默认ASP POST数据量最大为200KB,每个表单域限制是100KB。

IIS 6.0默认上传文件的最大大小是4MB。

IIS 6.0默认最大请求头是16KB。

IIS 6.0之前没有这些限制。

建议:

1)弄清楚运行环境的默认设定值有助于你的设计及对出现的问题做快速的解决。

2)应该考虑服务器版本。各个版本的IIS对这些参数的默认设定都不一样,有必要的话,找资料整理出一份对照表。这样开发与测试时都有个参考。

3)IIS 6.0的这些限制实际只是它的默认设定值而已,实际应用环境你可以修改它们。

在WINNT\system32\inetsrv\MetaBase.xml里默认定义了:
        AspBufferingLimit="4194304"           对应于上传文件最大大小
        AspMaxRequestEntityAllowed="204800"    对应于POST最大数据量

...

结论(写入Checklist):

使用ASP时,需要考虑POST表单每个域一般读取处理时有100KB的限制。充分考虑是否使用Request.Binary。

[转]get,post数据长度的限制的更多相关文章

  1. Get与Post数据长度的限制

    这个问题在我的开发中也遇到,所以在此贴出来(也是在网上搜出来的,呵呵)这是原贴地址http://blog.csdn.net/somat/archive/2004/10/29/158707.aspx两个 ...

  2. Loadrunner 中socket协议RecvBuffer接收到数据长度为空

    socket通讯,有两种方式,一种是建立长连接(TCP),建立后,不停的发送,接收.另外一种是建立短连接(UDP),建立连接,发送报文,接收响应,关闭连接.两种方式 server的开销不同. 今天出现 ...

  3. 假设一个大小为100亿个数据的数组,该数组是从小到大排好序的,现在该数组分成若干段,每个段的数据长度小于20「也就是说:题目并没有说每段数据的size 相同,只是说每个段的 size < 20 而已」

    假设一个大小为100亿个数据的数组,该数组是从小到大排好序的,现在该数组分成若干段,每个段的数据长度小于20「也就是说:题目并没有说每段数据的size 相同,只是说每个段的 size < 20 ...

  4. C# 保证数据长度相同

    /// <summary> /// 保证数据长度相同 /// </summary> /// <param name="obj"></par ...

  5. STM32 UART DMA实现未知数据长度接收

    串口通信是经常使用到的功能,在STM32中UART具有DMA功能,并且收发都可以使用DMA,使用DMA发送基本上大家不会遇到什么问题,因为发送的时候会告知DMA发送的数据长度,DMA按照发送的长度直接 ...

  6. EF 数据类型 0xA7 的数据长度或元数据长度无效

    测试方法 TestProject1.SysTest.HtmlAnalysisTest12 引发异常:  System.Data.UpdateException: 更新项时出错.有关详细信息,请参阅“I ...

  7. 第一章:1-22、长度为100字节的应用层数据交给运输层传送,需加上20字节的TCP首部。再交给网络层传送,需加上20字节的IP首部。最后交给数据链路层的以太网传送,加上首部和尾部18字节。试求数据的传输效率。  若应用层数据长度为1000字节,数据的传输效率是多少?

    <计算机网络>谢希仁著第四版课后习题答案答: 数据长度为100字节时 传输效率=100/(100+20+20+18)=63.3% 数据长度为1000字节时, 传输效率=1000/(1000 ...

  8. Redis中String类型的Value最大可以容纳数据长度

    项目中使用redis存储,key-value方式,在Redis中字符串类型的Value最多可以容纳的数据长度是512M 官方信息: A String value can be at max 512 M ...

  9. unix udp sendto 最大可发送的数据长度

    sendto 的最大可发送数据长度受限于两个值. 第一 [2^16 -1 - 8 -20] 第二 [SO_SNDBUF] 解释受限于[2^16-1-8-20] 数据封装过程 第一步: 用户层 : us ...

随机推荐

  1. 3D照片放大展示窗口

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/stri ...

  2. [reprint]useful linux commands

    linux一说都是搞开发玩的,敲敲键盘就能完成所有的工作.其实你也可以这么玩,玩游戏的除外哦. 那我们就来侃侃如何玩,linux是命令的天下,高级的命令那是相当的多,但是我们正真用到的也就那么几个看你 ...

  3. 算法提高 c++_ch02_01

    http://lx.lanqiao.org/problem.page?gpid=T237  算法提高 c++_ch02_01   时间限制:1.0s   内存限制:512.0MB      编写一个程 ...

  4. C++之路起航——标准模板库(deque)

    deque(双端队列):http://baike.baidu.com/link?url=JTvA2cuLubptctHZwFxswvlZvxNdFOxmifsYCGLj5IZF-Tj4rbWLv8Jn ...

  5. Spring中Bean的配置:基于注解的方式

    组件扫描:Spring能够从classpath下自动扫描,侦测和实例化具有特定注解的组件. 特定组件包括: -@Component:基本注解,标识一个受Spring管理的组件 -@Respositor ...

  6. webpack 无法安装

    命令行输入:  npm install webpack -g 解决办法:增加环境变量  D:\nine\trunk\node_modules\.bin\ bin目录下有webpack.cmd 如果还是 ...

  7. oracle冷备份后恢复

    本地恢复 在运行中输入cmd. 在cmd界面中输入sqlplus/nolog进入sql*plus. 以dba身份连接数据库conn sys/你设定的密码 as sysdba. 输入:shutdown ...

  8. 《zw版·Halcon-delphi系列原创教程》cgal与opencv,Halcon

    <zw版·Halcon-delphi系列原创教程>cgal与opencv,Halcon opencv作为少有的专业开源图像软件,虽然功能,特别是几何计算方面,不如Halcon,不过因为开源 ...

  9. zw版_Halcon-delphi系列教程_卫星航拍精确打击目标自动识别

    <zw版·Halcon-delphi系列原创教程> 卫星航拍精确打击目标自动识别 这几天,俄罗斯空军在叙利亚大显神威,美军有意见了,说俄罗斯是狂轰滥炸,不是精确打击.      不过,战斗 ...

  10. DataGridView 些许事件测试

    原始设计需求:当单元格内容是空白时,鼠标进入之后,显示一些数据 直观的第一感觉必然是用CellClick,细想,如果用户不用鼠标,直接按Tab键切换单元格呢?又或者,用户直接双击涅~ 主要测试的是:  ...