http://blog.csdn.net/somat/article/details/158707
一、问题起因
在某项目释放后Bug统计的附件《释放后问题》里有:
问题 |
原因 |
分析 |
备注 |
CSV处理时,如果处理的主题数过多,发生URL参数上限的错误; |
可变长度的参数通过URL方式传递,会造成这种潜在的错误发生。 |
1、属于2次发生问题,开发方面没有及时通过checklist等方式向组员传达相关注意事项; |
1、作为经验添加至CheckList中,加强组内共享、检查的效果; |
通过对模块原有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。
参考资料:
1、Maximum URL Length Is 2,083 Characters in Internet Explorer
2、Hypertext Transfer Protocol--HTTP/1.1
3、PRB: Error "Request Object, ASP 0107 (0x80004005)" When You Post a Form
4、IIS 6.0 Troubleshooting [Client Requests Error-out or Time-out一节]
相关推荐
在寻找最短路径问题上,有时不仅要知道两个指定顶点间的最短路径,还需要知道某个顶点到其他任意顶点间的最短 路径。⽤遗传算法解决这类问题,没有太多的约束条件和有关解的限制,因⽽可以很快地求出任意两点间的...
Microsoft Windows 系统错误代码简单分析: 0000 操作已成功完成。 0001 错误的函数。 0002 系统找不到指定的文件。 0003 系统找不到指定的路径。 0004 系统无法打开文件。 0005 拒绝访问。...
缺乏特殊频谱的这种不规则性被用来约束ALP参数,其中两个最流行的来源是射电星系NGC 1275和blazar PKS 2155-304。 效果以及约束条件取决于磁场,来自光源的光通过该磁场传播。 在这里,我们从NGC 1275的伽马射线...
SQLServer数据库设计规范 作者:佚名 厚朴教育来源:网络 点击数:1446 更新时间:2008-12-2 1 相关的设计规范: 1.1 采用有意义的... 3、注释语法包含两种情况:单行注释、多行注释 单行注释:注释前有两个连字符(--)
⼆、需求描述 站内信通常需要解决两个需求: 1. ⽤户对⽤户的站内信,管理员对⽤户的站内信:即⼀对⼀发送 2. 管理员对多⽤户、⽤户组、全站的站内信:即⼀对多发送 (还有⼀种是⽤户对产品的站内信,例如对某个...
为了避免上述问题除了设法分割两电路block之外,设计电路板之前充分检讨设计构想,才是根本应有的手法,基本上设计高频电路用电路板必需掌握下列三大原则:  高质感。  不可取巧。 ...
书中实例来源于多位工程师的多年积累,具有很强的实用性。 本书是第I卷,以开发人员在项目开发中经常遇到的问题和必须掌握的技术为中心,介绍了应用PHP进行Web开发的各个方面的知识和技巧,主要包括开发环境、PHP...
书中实例来源于多位工程师的多年积累,具有很强的实用性。 本书是第I卷,以开发人员在项目开发中经常遇到的问题和必须掌握的技术为中心,介绍了应用PHP进行Web开发的各个方面的知识和技巧,主要包括开发环境、PHP...
儒略日序、每日距今日天数、任意两个日期之间相距天数,每日的十二时柱,三伏、九九、入梅出梅日期,每日星座,世界各地时间对照,全国2600多个城镇的经纬度及这些城镇每天的日出、日落时间和昼长(日出到日落的时间...
CREATE TABLE 数据表名称(字段1 类型1(长度),字段2 类型2(长度) …… ) 例:CREATE TABLE tab01(name varchar(50),datetime default now()) DROP TABLE 数据表名称 (永久性删除一个数据表) 4. 记录集对象的方法:...
且具有智能标题截取功能:由于英文和数字是半角字符,而中文汉字是全角,当标题中经常出现这两种混杂,又不愿意采用精简标题的情况下,强制截取长度会影响页面美观。智能截取会主动判断每一个字符是全角或半角,会...
MySql的用户管理是通过 User表来实现的,添加新用户常用的方法有两个,一是在User表插入相应的数据行,同时设置相应的权限;二是通过GRANT命令创建具有某种权限的用户。其中GRANT的常用用法如下: grant all on mydb...
这就为我们的设计提出了两个方面的要求:1方面,要求接口简单灵活且有较高的数据传输率;另1方面,由于数据量通常都较大,要求主机能够对实时数据做出快速响应,并及时进行分析和处理。随着信息化带动工业化进程的...