您可以传递给Wininet函数HttpOpenRequest的最大URL长度是多少?

时间:2009-06-18 00:06:04

标签: url wininet

您可以传递给Wininet函数HttpOpenRequest的最大URL长度是多少?

3 个答案:

答案 0 :(得分:4)

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)
...

答案 1 :(得分:2)

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

  

Apache(服务器)

     

我早期的尝试来衡量   Web浏览器中的最大URL长度   陷入服务器URL长度限制   大约4,000个字符,   之后Apache产生了“413   实体太大“错误。我使用了   目前最新的Apache构建发现   在Red Hat Enterprise Linux 4中   仅限官方Apache文档   提到一个8,192字节的限制   请求中的单个字段。

     

Microsoft Internet Information Server(服务器)

     

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

     

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

     

最多可以使用8,000个字节。那些   构建Web应用服务器   使用Perl的HTTP :: Daemon模块   遇到16,384字节的限制   所有HTTP请求的组合大小   头。这不包括   POST方法表单数据,文件上传,   等,但它确实包括URL。在   这样做会导致413错误   当URL明显更长时   超过8,000个字符。这个限制   可以轻松删除。寻找所有   在Daemon.pm中出现16x1024   并用更大的值替换它们。   当然,这确实会增加你的   接触拒绝服务攻击。

(来自Boutell.com

答案 2 :(得分:1)

I would suggest less than 2000 characters.,但此KB article表明Internet Explorer的限制为2083,这也可能适用于您的情况。