Verwendung von Komma in URL: codiert oder nicht codiert

7

Ich habe sogar eine Seite gesehen, auf der in derselben URL sowohl verschlüsselte als auch nicht verschlüsselte Kommas enthalten waren, z. B.: Https://example.com/product?filter_color:blue,green&filter_size:xl%2Cxxl

Mein Wissen über das Thema ist etwas chaotisch:

  • Auf der einen Seite wäre Komma in einem von mir gelesenen URI-RFC ein sogenanntes reservedZeichen und sollte in URLs immer codiert sein.
  • Auf der anderen Seite habe ich viele Websites gesehen, auf denen Komma nicht codiert war.

Die Frage stellte sich aufgrund der Verwendung sowohl der codierten als auch der nicht codierten Variante: Wie sollte es richtig gemacht werden: codieren oder nicht codieren?

Evgeniy
quelle
Wenn Sie sie verwenden, müssen Sie wahrscheinlich darauf vorbereitet sein, die URL mit ihnen sowohl codiert als auch nicht codiert zu unterstützen.
Stephen Ostermiller
@StephenOstermiller: Meine Frage ist eher, warum und wie in derselben URL sowohl codierte als auch nicht codierte Kommas sind. Warum behandelt der Browser sie nicht mit derselben einheitlichen Grafik? ODER beide codiert, entweder beide nicht codiert. Übrigens: Wenn beide Notationen in Bezug auf SEO zulässig sind, sollten sie doppelte Inhalte verursachen. Es ist also nicht ganz richtig zu argumentieren, das Thema hat keine SEO-Auswirkungen.
Evgeniy
1
Eine codierte URL entspricht ihrer nicht codierten Version (auch z. B. Punycode-Domains). Es gibt keinen doppelten Inhaltsaspekt. Es wird immer nur auf eine Weise gecrawlt und indiziert. Persönlich würde ich funky Zeichen (wie Leerzeichen, Komma, Doppelpunkt usw.) aus der URL heraushalten und es Ihren Benutzern leicht machen.
John Mueller

Antworten:

9

,ist ein reserviertes Zeichen. Reservierte Zeichen entsprechen (zu Normalisierungszwecken) niemals ihren prozentual codierten Varianten. Diese URIs sind also nicht gleichwertig :

http://example.com/?foo,bar
http://example.com/?foo%2Cbar

Weder der URI-Standard ¹ noch die HTTP / HTTPS- URI-Schemaspezifikationen definieren eine spezielle Rolle für ,die Abfragekomponente. Dies bedeutet, dass Autoren ,Daten in der Abfragekomponente darstellen können (dh für alles, was sie wollen).

Es kann sinnvoll zu verwenden , ,mit zusammen %2Cin einer Abfragekomponente des URI. Ein Autor könnte beispielsweise entscheiden, ,Name-Wert-Paare zu trennen und %2CKommas in Werten darzustellen:

http://example.com/?score:1%2C4,time:55

(In der Beispiel-URI in Ihrer Frage scheint dies jedoch keinen Sinn zu ergeben. Unter der Annahme, dass die Werte "blau" und "grün" sowie "xl" und "xxl" sind, wäre dies für beide sinnvoller Verwenden Sie , oder %2C in beiden Fällen. Ihre Beispiel-URI wäre sinnvoll, wenn z. B. der letztere Fall tatsächlich ein Wert ist, also "xl, xxl".)


¹ Beachten Sie, dass RFC 2396 veraltet ist. Der URI-Standard der IETF sollte immer unter STD 66 zugänglich sein , das derzeit RFC 3986 ist .

Ich gab eine ähnliche Antwort auf die Frage Mögliche Nebenwirkung mit Komma in Querystring? bei Stapelüberlauf.

unor
quelle
Es ist ein echtes Beispiel - traurig, aber wahr. im übrigen - absolut einverstanden. Ich war auch der Meinung, dass die unterschiedliche Verwendung von codierten und nicht codierten Kommas zumindest durch unterschiedliche Verwendungszwecke erklärt werden sollte, z. B. die Verwendung als unterschiedliche Entitäten, Trennzeichen und Teile des sinnvollen Werts. war nur standardmäßig fehlgeleitet, also nahm ich die einzige Verwendungsart an: oder codiert, entweder nicht codiert
Evgeniy