Warum beträgt das Limit des Internet Explorers nur 2K, während das Limit von IIS bei 16K liegt? Ich glaube nicht, dass es Sinn macht.
Also möchte ich ein Experiment über Ajax-Anforderungs-URL-Größenbeschränkungen starten.
I habe die maxHttpHeaderSize meines Tomcat HTTP Connectors auf "1048576" gesetzt. Und eine sehr lange URL vorbereitet.
Dann sende ich eine Anforderung mit der langen URL wie folgt:
var url="/ajax/url-length.jsp";
jQuery.ajax(url,{data:{q:"0".repeat(1048000-url.length-4)}});
jQuery meldet Erfolg. Tomcat meldet, dass die angeforderte URL 1048015 Bytes beträgt. Es wurde mit Chrome 50 und Internet Explorer 11 getestet.
Also werden Webbrowser Ihre URL nicht absichtlich kürzen oder begrenzen, wenn sie Ajax-Anforderungen senden.
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).