2009-06-18 56 views

回答

2

HttpOpenRequest没有最大长度,但您定位的服务器软件可能会限制您的URL长度。

的Apache(服务器)

我的早期尝试来测量撞到服务器URL长度限制的web浏览器 的 最大URL长度的大约4000个字符, 之后阿帕奇产生“ 413 实体太大“错误。我使用了目前为止最新的Apache编译版本 在红帽企业Linux 4中。 官方Apache文档只有 提到了一个请求中的 单个字段的8,192字节限制。

Microsoft Internet信息服务器(服务器)

默认限制为16,384个字符 (是的,微软的Web服务器接受 比微软的网络浏览器 较长的URL)。这是可配置的。

Perl的HTTP ::守护程序(服务器)

最多8,000个字节会工作。构建具有Perl的HTTP :: Daemon模块的web应用服务器 的那些 将在所有HTTP请求 头部的 组合大小上遇到16,384字节限制。这不包括 POST方法表单数据,文件上传, 等,但它包含URL。在 实践中,当URL显着长于8,000个字符时,导致413错误 。这个限制 可以很容易地删除。在Daemon.pm 中查找所有 发生的16x1024,并用较大的值替换它们。 当然,这会增加您的拒绝服务攻击风险。

(从Boutell.com

+0

你知道,如果这些限制包括名称值对(例如url?data = x ..)或只是url本身? – 2010-09-08 09:34:30

3

有一些最大长度consts在WinInet.h:

... 
// 
// maximum field lengths (arbitrary) 
// 

#define INTERNET_MAX_HOST_NAME_LENGTH 256 
#define INTERNET_MAX_USER_NAME_LENGTH 128 
#define INTERNET_MAX_PASSWORD_LENGTH 128 
#define INTERNET_MAX_PORT_NUMBER_LENGTH 5   // INTERNET_PORT is unsigned short 
#define INTERNET_MAX_PORT_NUMBER_VALUE 65535  // maximum unsigned short value 
#define INTERNET_MAX_PATH_LENGTH  2048 
#define INTERNET_MAX_SCHEME_LENGTH  32   // longest protocol name length 
#define INTERNET_MAX_URL_LENGTH   (INTERNET_MAX_SCHEME_LENGTH \ 
             + sizeof("://") \ 
             + INTERNET_MAX_PATH_LENGTH) 
... 
相关问题