Darf eine URI (insbesondere eine HTTP-URL) ein oder mehrere Leerzeichen enthalten? Wenn eine URL verschlüsselt werden muss , ist dies +
nur eine häufig befolgte Konvention oder eine legitime Alternative?
Kann jemand auf einen RFC verweisen, der angibt, dass eine URL mit einem Leerzeichen codiert werden muss ?
Motivation für die Frage: Beim Betatest einer Website habe ich festgestellt, dass einige URLs mit Leerzeichen erstellt wurden. Firefox schien das Richtige zu tun, was mich überraschte! Aber ich wollte in der Lage sein, die Entwickler auf einen RFC zu verweisen, damit sie das Bedürfnis verspüren, diese URLs zu reparieren.
Antworten:
Gemäß RFC 1738 :
quelle
Warum muss es verschlüsselt werden? Eine Anfrage sieht folgendermaßen aus:
Es gibt 3 Felder, die durch ein Leerzeichen getrennt sind. Wenn Sie ein Leerzeichen in Ihre URL einfügen:
Sie wissen, dass 4 Felder vorhanden sind. Der HTTP-Server teilt Ihnen mit, dass es sich um eine ungültige Anforderung handelt.
3 Felder => gültig
Hinweis: In der Abfragezeichenfolge (nach?) Wird ein Leerzeichen normalerweise als + codiert
eher, als
quelle
Kürzere Antwort: Nein, Sie müssen ein Leerzeichen codieren. Es ist richtig, ein Leerzeichen als zu codieren
+
, jedoch nur in der Abfragezeichenfolge. in dem Pfad müssen Sie verwenden%20
.quelle
URLs werden in RFC 3986 definiert , obwohl auch andere RFCs relevant sind, RFC 1738 jedoch veraltet ist.
Sie dürfen zusammen mit vielen anderen Zeichen keine Leerzeichen enthalten. Da diese verbotenen Zeichen häufig irgendwie dargestellt werden müssen, gibt es ein Schema zum Codieren in eine URL, indem sie in ihr hexadezimales ASCII-Äquivalent mit dem Präfix "%" übersetzt werden.
Die meisten Programmiersprachen / -plattformen bieten Funktionen zum Codieren und Decodieren von URLs, obwohl sie möglicherweise nicht den RFC-Standards entsprechen. Zum Beispiel weiß ich, dass PHP dies nicht tut.
quelle
Ja, der Speicherplatz wird normalerweise mit "% 20" codiert. Alle Parameter, die an eine URL übergeben werden, sollten aus Sicherheitsgründen verschlüsselt werden.
quelle
Die URL kann ein Leerzeichen enthalten und wird in den meisten Browsern als% 20 angezeigt. Die Regeln für die Browserkodierung ändern sich jedoch häufig und wir können nicht davon abhängen, wie ein Browser die URL anzeigt.
Stattdessen können Sie das Leerzeichen in der URL durch ein beliebiges Zeichen ersetzen, von dem Sie glauben, dass es die URL lesbarer und 'hübscher' macht;) ..... O so allgemeine Zeichen, die bevorzugt werden, sind "-", "_", "+" .... aber dies sind nicht die Zwänge, so dass Sie jedes Zeichen verwenden können, das nicht bereits in der URL enthalten sein soll.
Bitte vermeiden Sie%, &,}, {,], [, /,>, <als Ersatz für URL-Leerzeichen, da diese in bestimmten Browsern und Plattformen einen Fehler verursachen können.
Wie Sie sehen können, verwendet der Stak-Überlauf selbst das Zeichen '-' als Leerzeichen (% 20).
Viel Spaß beim Fragen.
quelle
Urls sollten keine Leerzeichen enthalten. Wenn Sie eine Adresse adressieren müssen, die dies tut, verwenden Sie den codierten Wert von
%20
quelle
URIs und damit URLs sind in RFC 3986 definiert.
Wenn Sie sich die dort definierte Grammatik ansehen, werden Sie schließlich feststellen, dass ein Leerzeichen niemals Teil einer syntaktisch zulässigen URL sein kann. Daher ist der Begriff "URL mit einem Leerzeichen" ein Widerspruch an sich.
quelle
Zur Beantwortung Ihrer Frage. Ich würde sagen, dass Anwendungen häufig Leerzeichen in Werten ersetzen, die in URLs verwendet werden. Der Grund dafür ist normalerweise, die schwer zu lesende prozentuale (URI) Codierung zu vermeiden, die auftritt.
Lesen Sie diesen Wikipedia-Artikel über Prozentcodierung .
quelle
Firefox 3 zeigt
%20
s in URLs als Leerzeichen in der Adressleiste an.quelle
"Is a URL allowed to contain a space?"
. Eher ein Kommentar.