3

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

4

3 回答 3

5

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)
...
于 2009-08-18T10:50:35.843 回答
2

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

阿帕奇(服务器)

我早期尝试在 Web 浏览器中测量最大 URL 长度时遇到了大约 4,000 个字符的服务器 URL 长度限制,之后 Apache 产生“413 Entity Too Large”错误。我使用了 Red Hat Enterprise Linux 4 中最新的 Apache 版本。官方的 Apache 文档只提到了请求中单个字段的 8,192 字节限制。

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

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

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

最多 8,000 个字节可以工作。那些使用 Perl 的 HTTP::Daemon 模块构建 Web 应用程序服务器的人将遇到所有 HTTP 请求标头的总大小限制为 16,384 字节。这不包括 POST 方法的表单数据、文件上传等,但它确实包括 URL。实际上,当 URL 明显超过 8,000 个字符时,这会导致 413 错误。这个限制可以很容易地消除。在 Daemon.pm 中查找所有出现的 16x1024 并将它们替换为更大的值。当然,这确实会增加您遭受拒绝服务攻击的风险。

(来自Boutell.com

于 2009-06-18T00:27:15.600 回答
1

我建议少于 2000 个字符。,但是这篇知识库文章建议 Internet Explorer 的限制为 2083,这也可能适用于您的情况。

于 2009-06-18T00:11:08.380 回答