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
reserved
Zeichen 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?
Antworten:
,
ist ein reserviertes Zeichen. Reservierte Zeichen entsprechen (zu Normalisierungszwecken) niemals ihren prozentual codierten Varianten. Diese URIs sind also nicht gleichwertig :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%2C
in einer Abfragekomponente des URI. Ein Autor könnte beispielsweise entscheiden,,
Name-Wert-Paare zu trennen und%2C
Kommas in Werten darzustellen:(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.
quelle