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

发布于 2024-07-25 01:09:04 字数 54 浏览 10 评论 0原文

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

What is the maximum URL length you can pass to the Wininet function, HttpOpenRequest?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

明明#如月 2024-08-01 01:09:04

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

There are some max length consts in 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)
...
月下凄凉 2024-08-01 01:09:04

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

Apache(服务器)

我早期尝试衡量
Web 浏览器中的最大 URL 长度
遇到服务器 URL 长度限制
约 4,000 个字符,
之后 Apache 产生一个“413
实体太大”错误。我使用了
找到当前最新的 Apache 版本
在红帽企业 Linux 4 中。
仅官方 Apache 文档
提到了 8,192 字节的限制
请求中的单个字段。

Microsoft Internet Information Server(服务器)

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

Perl HTTP::Daemon(服务器)

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

(来自 Boutell.com

HttpOpenRequest does not have a maximum length but server software you are targeting will likely have a limit on your URL length.

Apache (Server)

My early attempts to measure the
maximum URL length in web browsers
bumped into a server URL length limit
of approximately 4,000 characters,
after which Apache produces a "413
Entity Too Large" error. I used the
current up to date Apache build found
in Red Hat Enterprise Linux 4. The
official Apache documentation only
mentions an 8,192-byte limit on an
individual field in a request.

Microsoft Internet Information Server (Server)

The default limit is 16,384 characters
(yes, Microsoft's web server accepts
longer URLs than Microsoft's web
browser). This is configurable.

Perl HTTP::Daemon (Server)

Up to 8,000 bytes will work. Those
constructing web application servers
with Perl's HTTP::Daemon module will
encounter a 16,384 byte limit on the
combined size of all HTTP request
headers. This does not include
POST-method form data, file uploads,
etc., but it does include the URL. In
practice this resulted in a 413 error
when a URL was significantly longer
than 8,000 characters. This limitation
can be easily removed. Look for all
occurrences of 16x1024 in Daemon.pm
and replace them with a larger value.
Of course, this does increase your
exposure to denial of service attacks.

(from Boutell.com)

Hello爱情风 2024-08-01 01:09:04

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

I would suggest less than 2000 characters., but this KB article suggests Internet Explorer has a limit of 2083, which may well apply to your case too.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文