Die HTTP 1.1 Spezifikation besagt:
URIs in HTTP können in absoluter Form oder relativ zu einem
bekannten Basis-URI [11] dargestellt werden, abhängig von ihrem Verwendungskontext. Die beiden
Formen werden durch die Tatsache unterschieden, dass absolute URIs immer
mit einem Schema-Namen beginnen, gefolgt von einem Doppelpunkt. Für verbindliche Informationen über
URL-Syntax und Semantik siehe "Uniform Resource Identifiers (URI): Generische Syntax und Semantik," RFC 2396 [42] (ersetzt RFCs 1738 [4] und RFC 1808 [11]). Diese Spezifikation übernimmt die Definitionen von "URI-Referenz", "absoluteURI", "relativeURI", "port",
"host","abs_path", "rel_path" und "authority" aus dieser
Spezifikation.
Das HTTP-Protokoll setzt keine a priori Beschränkung für die Länge von URIs. Server MÜSSEN in der Lage sein, die URI eines jeden von ihnen bereitgestellten Ressource zu verarbeiten, und SOLLTEN in der Lage sein, URIs unbegrenzter Länge zu verarbeiten, wenn sie GET-basierte Formen bereitstellen, die solche URIs generieren könnten.* Ein Server SOLLTE einen 414 (Request-URI Too Long) Status zurückgeben, wenn ein URI länger ist, als der Server verarbeiten kann (siehe Abschnitt 10.4.15).
Hinweis: Server sollten vorsichtig sein, wenn sie sich auf URI-Längen von über 255 Bytes verlassen, da einige ältere Client- oder Proxy-Implementierungen diese Längen möglicherweise nicht ordnungsgemäß unterstützen.
Wie von @Brian erwähnt, können die HTTP-Clients (z. B. Browser) ihre eigenen Grenzen haben, und die HTTP-Server werden unterschiedliche Grenzen haben.
47 Stimmen
FWIW, für Windows-Benutzer können Serverpfade, die 250 Zeichen überschreiten möglicherweise Probleme verursachen, wenn URLs erstellt werden, siehe z.B. HttpContext.Current.Server.MapPath fails for long file names auf forums.asp.net. Das Fazit: Wenn eine Einschränkung Sie nicht aufhält, könnte eine andere das tun.
0 Stimmen
@gerryLowry: Windows-Tools haben bereits Probleme beim Kompilieren mit langen Dateinamen, daher ist dies normalerweise kein Problem, wenn Sie
MapPath
nur für tatsächliche Dateinamen verwenden. Man hofft, dass die extra langen URL-Namen nicht mit extra langen Dateipfaden gekoppelt sind, da letzteres zu einem unbrauchbaren Durcheinander führt, während Ersteres möglicherweise nur ein Entwickler ist, der GET-Anfragen missbraucht, wo er POST-Anfragen verwenden sollte.29 Stimmen
Aus support.microsoft.com/kb/208427 "Die maximale URL-Länge beträgt 2.083 Zeichen im Internet Explorer"
12 Stimmen
Darf ich fragen, warum du das wissen musstest? D.h. für welchen Anwendungsfall benötigst du eine lange URL?
1 Stimmen
Ähnliche ServerFault-Frage zu Tomcat: serverfault.com/questions/56691/…
0 Stimmen
Zugehörige ServerFault-Frage zu Jetty: serverfault.com/questions/136249/…
27 Stimmen
@Lohoris: Wenn ein Formular
get
anstelle vonpost
verwendet, wird das Lesezeichen auf die Seite festgehalten, die durch das ausgefüllte Formular erreicht wurde, die eingegebenen Informationen erfassen. In einigen Fällen kann das schlecht sein, aber in anderen Fällen kann es nützlich sein. Damit das funktioniert, muss der Browser jedoch in der Lage sein, eine URL mit allen Informationen zu verarbeiten.5 Stimmen
@Lohoris Wenn wir Seiten schreiben, um Berichte zu generieren, verwenden wir ein Kriterienformular. Es ist auf einigen Berichten nützlich, die URL per E-Mail an jemanden weiterzuleiten, wobei die Kriterien bereits enthalten sind. Je nach Bericht sind wir manchmal gezwungen,
post
zu verwenden, da die Kriterien sonst abgeschnitten werden. Nur ein weiteres Anwendungsbeispiel.1 Stimmen
Wenn Ihre Eingabe in URL-Parametern enthalten sein muss, möchten Sie dies möglicherweise so lang wie möglich haben. Tableau ermöglicht es Ihnen, Webseiten in Dashboards einzubetten und die URL dynamisch zu gestalten, basierend darauf, worauf der Benutzer klickt. Ich möchte möglicherweise 100 Seiten Text als URL-Parameter übergeben, um eine Stimmungsanalyse durchzuführen und dann ein Ergebnis zurückzugeben. Diese 100 Seiten Text würden sich je nachdem ändern, auf welches Buch der Benutzer klickt.
0 Stimmen
@o0'. Parameter. Insbesondere benutzerdefinierte.
0 Stimmen
@o0'. Ein gutes Beispiel für eine lange URL ist, wenn ich Clickatell bitte, eine Nachricht zu senden. Ich muss die Nachricht selbst im URL-Format (z. B. Leerzeichen als %20) sowie die anderen Parameter angeben.
0 Stimmen
Es lohnt sich zu beachten, dass nicht alle HTTP-Anfragen an einen Webserver über einen Webbrowser erfolgen, sodass Sie an Grenzen der Socket-API oder der Webserverbeschränkungen stoßen können, dass auch nicht alle URL-Änderungen eine HTTP-Anfrage auslösen (z. B. Verlaufspush oder Hash-Änderung). Was passiert also wirklich, wenn Sie 100k Zeichen an
window.location.href
anhängen und es dann im JS-Engine als Wert verwenden? Das letzte Mal, als ich etwas Ähnliches gemacht habe, erhielt ich viel weniger Zeichen imhref
-Eigenschaft, die angehängt werden sollten (jetzt spreche ich über Chrome).