2009-10-15 12 views
19

Gibt es ein Längenlimit für den Fragmentteil einer URL (auch bekannt als Hash)?Maximale Länge der URL-Fragmente (Hash)

+0

Es gibt keinen Standard für den Hash, da dieser nur clientseitig ist, aber das Limit ist generell [sehr hoch] (http://stackoverflow.com/a/25759637/405550). – Zaz

Antwort

13

Der Hash ist Client-Seite nur, so dass die Regeln für HTTP kann es nicht zur Anwendung.

+0

Der "Hash" ist eigentlich das URL-Fragment und wird nicht an den Server gesendet, daher gilt die Längenbeschränkung aus einer Serverperspektive nicht . –

7

Es hängt vom Browser ab. Ich habe festgestellt, dass in Safari, Chrome und Firefox eine URL mit einem langen Hash zulässig ist, aber wenn es ein Parameter ist, der an den Server gesendet wird, zeigt der Browser einen Fehler 414 oder 413 an.

zum Beispiel: eine URL wie http://www.stackoverflow.com/?abc#{hash value with 100 thousand characters} wird in Ordnung sein. und Sie können location.hash verwenden, um den Hash-Wert in Javascript zu erhalten, aber eine URL wie http://www.stackoverflow.com/?abc&{query with 100 thousand characters} ist illegal, wenn Sie diesen Link in die Adressleiste einfügen, wird ein 413 Fehlercode angegeben und die Nachricht lautet the client issued a request that was too long. Wenn das eine Verknüpfung in einer Webseite ist, antwortet Nginx in meinem Computer die 414-Fehlermeldung.

Ich kenne die Situation in IE nicht.

Also ich denke, die Begrenzung der Länge der URL ist nur für die Übertragung oder HTTP-Server, der Browser wird es manchmal überprüfen, aber nicht jedes Mal, und es wird immer erlaubt, als Hash verwendet werden.