Frage

Ich habe eine Web-Anwendung, die auf XmlHttpRequest Objekte mit der setRequestHeader API. Ich verwende einen benutzerdefinierten Header-Namen (zum Beispiel X-Foo) und JSON strukturierten Wert. Es ist nicht Teil der URL Abfrage-Zeichenfolge oder POST-Körpers, weil es Meta-Informationen über die Anforderung ist.

Gibt es eine praktische Größe Grenze für den Header-Wert? Wenn meine JSON abgeschnitten wird, wird es unparseable. Ich bin sehr besorgt mit Grenzen in Apache 2, Tomcat 6 und IIS 7. Ich habe eine Google-Suche nach http-Header-Länge Grenze , aber viele der Ergebnisse datiert scheinen. Es gibt einige relevante Kommentare in Wie groß kann ein User-Agent-String bekommen? , aber nicht so genau wie ich möchte.

Edit: Ich lief über diese ähnliche Frage - Maximum auf HTTP-Header Werte

War es hilfreich?

Lösung

Ja, aber die Grenzen sind konfigurierbar und abhängig von Plattform. Zum Beispiel Tomcat hat eine Standardlimit von 8K. Ich glaube, dass IIS 6, nicht sicher IIS 7, eine Grenze von 16 KB hat. Ich lief dies in, wenn für mehrere Web-Sites, die integrierte Windows-Authentifizierung. Es stellte sich meine Sicherheits-Token, war zu groß, wenn in den Header codiert. diese sind zum Glück konfigurierbar. Registrierungseinstellungen für IIS finden Sie unter http://support.microsoft.com/kb/820129 finden . Ich die wichtigsten Einstellungen glauben MaxFieldLength ändern (pro Kopfgröße) und MaxRequestBytes (Gesamtgröße der Anfrage).

Andere Tipps

Obwohl jede Web-Server-Software hat einige Einschränkungen, gibt es einen Unterschied, ob es eine Grenze für den HTTP-Request-Leitung und Header-Felder oder für jedes Header-Feld.

Hier ist eine Zusammenfassung:

  • 1.3 , 2.0 2.2 , 2.3 : 8190 Bytes (für jedes Header-Feld)
  • IIS:
    • 4.0 : 2.097.152 Bytes (für die Anforderungsleitung und Kopf Felder)
    • 5.0 : 131.072 Bytes , 16384 Bytes mit Windows 2000 Service Pack 4 (für die Anforderungszeile und Header-Felder)
    • 6.0 : 16384 Bytes (für jede Header-Felder)
  • Tomcat:
    • 5.5.x / 6.0.x : 49152 Bytes (für die Anforderungszeile und Header-Felder)
    • 7.0.x : 8190 Bytes (für die Anforderungszeile und Header-Felder)

So schließen: Um über alle Web-Server akzeptiert werden, ein Anfrage line plus Header des Anforderungsfelder nicht 8190 Bytes nicht überschreiten . Dies ist auch der Grenzwert für jede Header-Felder (effektiv sogar weniger).

Für Apache, fand ich diese Server Grenzwerte für Apache Sicherheit Artikel, der diese Richtlinien aufgeführt:

  # allow up to 100 headers in a request
  LimitRequestFields 100
  # each header may be up to 8190 bytes long
  LimitRequestFieldsize 8190

Für Nginx, die large_client_header_buffers Richtlinie von HttpCoreModule diese Kontrollen:

  

Die längste Kopfzeile der Anfrage muss auch nicht mehr als die Größe   einen Puffer, da sonst der Kunde den Fehler "Bad Request" erhalten (400).

     

die Größe eines Puffers ist standardmäßig auf die Größe der Seite gleich,   je nach Plattform dieses entweder 4K oder 8K

Während Sie den Server so konfigurieren können, ist es unwahrscheinlich, dass Sie wirklich den ganzen Weg durch Firewalls konfigurieren können, Loadbalancer und Proxies. die Kopfgröße klein zu halten hält Probleme weg.

Der Flash Media Server 4.5 verfügt über eine sehr kurze Standard-Header-Längengrenze, die der Server, insbesondere unter Umständen einfach nicht reagieren kann dazu führen, wo es eine moderate Cookie Last ist.

Siehe auch: Flash Media Server 4.5 Konfiguration und Administration: Konfigurieren des Servers Apache HTTP-Server konfigurieren: Geben Sie die maximale HTTP-Header Zeilenlänge

  

In der Flash Media Server Adaptor.xml Datei, die MaxHeaderLineLength   Element bestimmt die Größe des HTTP-Header der Server verarbeiten kann.   Der Standardwert für MaxHeaderLineLength ist 1024 Bytes. einige Browser   ein Header größer als 1024 Bytes senden. In diesem Szenario Apache sendet   eine leere Antwort zurück. Um dieses Problem zu beheben, konfigurieren   MaxHeaderLineLength bis 8192.

     

. Hinweis: Standardmäßig ist die Apache HTTP-Header-Größenbeschränkung ist 8 KB (8190 Byte plus ein Wagenrücklauf)

Setzen dieses hier, falls die Kopfgröße auf dem Flash Media Server beißt jemand anderes.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top