什么是你可以传递给函数的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?