2009-06-18 9 views

Antwort

2

HttpOpenRequest hat keine maximale Länge, aber für die Serversoftware, auf die Sie ausgerichtet sind, ist die URL-Länge wahrscheinlich begrenzt.

Apache (Server)

Meine frühen Versuche, die maximalen URL-Länge in Webbrowsern in eine Server-URL-Längengrenze von ca. 4.000 Zeichen gestoßen zu messen, erzeugt nach dem Apache eines " 413 Entität zu groß "Fehler. Ich verwendete die aktuellen aktuellen Apache Build gefunden in Red Hat Enterprise Linux 4. Die offizielle Apache-Dokumentation nur erwähnt eine 8.192-Byte-Grenze auf einem einzelnen Feld in einer Anfrage.

Microsoft Internet Information Server (Server)

Das Standardlimit ist 16.384 Zeichen (ja, Microsofts Webserver mehr URLs als Microsofts Web-Browser akzeptiert). Dies ist konfigurierbar.

Perl HTTP :: Daemon (Server)

Bis zu 8.000 Bytes arbeiten. Die Webanwendungsserver mit Perls HTTP :: Daemon-Modul erstellen stoßen eine 16,384 Byte Grenze auf die kombinierte Größe aller HTTP-Anforderung Header. Dies beinhaltet nicht POST-Methode Formulardaten, Datei-Uploads, usw., aber es enthält die URL. In Praxis führte dies zu einem 413 Fehler , wenn eine URL wesentlich länger war als 8.000 Zeichen. Diese Begrenzung kann leicht entfernt werden. Suchen Sie nach allen Vorkommen von 16x1024 in Daemon.pm und ersetzen Sie sie durch einen größeren Wert. Natürlich erhöht dies Ihre Exposition gegenüber Denial-of-Service-Angriffen.

(von Boutell.com)

+0

Wissen Sie, ob diese Grenzwerte Name Wert-Paare enthalten (zB URL? Daten = x ..) oder nur die URL selbst? –

+0

@ David Sykes: Ich * glaube * die Grenzen basieren auf der Größe des Puffers zum Speichern der Zeichen, so würde ich annehmen, dass Namen-Wert-Paare enthält. Aber ich spekuliere nur. –

+0

* "HttpOpenRequest hat keine maximale Länge" * - [Diese Antwort] (https://Stackoverflow.com/a/1293129/1889329) widerspricht dieser Aussage. – IInspectable

3

Es gibt einige maximale Länge 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) 
... 
Verwandte Themen