什么是你可以传递给函数的Wininet,HttpOpenRequest中网址的长度上限?(What

2019-07-28 21:54发布

什么是你可以传递给函数的Wininet,HttpOpenRequest中网址的长度上限?

Answer 1:

HttpOpenRequest还没有你的目标将可能对您的网址长度的限制,最大长度,但服务器软件。

阿帕奇(服务器)

我早期的尝试测量被撞成约4,000个字符的服务器URL长度的限制,在这之后的Apache产生了“413实体过大”错误的Web浏览器的最大URL长度。 我使用的电流高达红帽企业Linux 4中发现的Apache官方文档只有在请求对个人领域的提到8,192字节的限制日期的Apache版本。

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

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

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

截至8000个字节会工作。 这些构建Web应用程序服务器与Perl的HTTP ::守护进程模块中会遇到的所有HTTP请求头的结合大小16,384字节的限制。 这不包括POST方法的表单数据,文件上传等,但它确实包含的URL。 在实践中,这导致了413错误时,URL是超过8000个字符显著更长。 这种限制可以被容易地除去。 寻找在Daemon.pm的16x1024所有出现,并与一个较大的值替换它们。 当然,这会增加你接触到的拒绝服务攻击。

(从Boutell.com )



Answer 2:

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

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


Answer 3:

我建议小于2000个字符。 ,但这个知识库文章建议Internet Explorer具有的2083的限制,这很可能适用于你的情况了。



文章来源: What is the maximum URL length you can pass to the Wininet function, HttpOpenRequest?
标签: url wininet