Какую максимальную длину URL можно передать функции Wininet, HttpOpenRequest? - PullRequest
2 голосов
/ 18 июня 2009

Какова максимальная длина URL, которую вы можете передать функции Wininet, HttpOpenRequest?

Ответы [ 3 ]

4 голосов
/ 18 августа 2009

В 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)
...
2 голосов
/ 18 июня 2009

HttpOpenRequest не имеет максимальной длины, но целевое серверное программное обеспечение, скорее всего, будет иметь ограничение на длину вашего URL.

Apache (сервер)

Мои ранние попытки измерить максимальная длина URL в веб-браузерах натолкнулся на ограничение длины URL сервера из примерно 4000 символов, после чего Apache выдает "413 Entity Too Large "ошибка. Я использовал установлена ​​актуальная версия Apache в Red Hat Enterprise Linux 4. только официальная документация Apache упоминает ограничение 8,192 байт на отдельное поле в запросе.

Microsoft Internet Information Server (сервер)

Ограничение по умолчанию составляет 16 384 символа. (да, веб-сервер Microsoft принимает длинные URL-адреса, чем веб-сайт Microsoft браузер). Это настраивается.

Perl HTTP :: Daemon (сервер)

Работает до 8000 байт. Те построение серверов веб-приложений с Perl HTTP :: Daemon модуль будет встретить ограничение 16384 байт на объединенный размер всего HTTP-запроса заголовки. Это не включает Данные формы POST-метода, загрузка файлов, и т.д., но он включает в себя URL. В практика это привело к ошибке 413 когда URL был значительно длиннее чем 8000 символов. Это ограничение могут быть легко удалены. Искать всех вхождения 16x1024 в Daemon.pm и заменить их на большее значение. Конечно, это увеличивает ваши подверженность атакам типа "отказ в обслуживании".

(из Boutell.com )

1 голос
/ 18 июня 2009

Я бы предложил менее 2000 символов. , но в этой статье КБ предлагается ограничение Internet Explorer 2083, которое вполне может быть применимо и для вашего случая.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...