In der Frage wird gefragt, welche Zeichen in GET-Parametern zulässig sind, ohne sie zu codieren oder zu maskieren .
Gemäß RFC3986 (allgemeine URL-Syntax) und RFC7230, Abschnitt 2.7.1 (HTTP / S-URL-Syntax) müssen Sie nur Zeichen außerhalb des Abfragesatzes prozentual codieren (siehe Definition unten).
Es gibt jedoch zusätzliche Spezifikationen wie HTML5, Webformulare und die veraltete W3C-Empfehlung für die indizierte Suche . Diese Dokumente verleihen einigen Zeichen eine besondere Bedeutung, insbesondere Symbolen wie = & +; .
Andere Antworten hier legen nahe, dass die meisten reservierten Zeichen codiert werden sollten, einschließlich "/" "?". Das stimmt nicht Tatsächlich rät RFC3986, Abschnitt 3.4 von einer prozentualen Codierung "/" "?" Zeichen.
Für die Benutzerfreundlichkeit ist es manchmal besser, eine prozentuale Codierung dieser Zeichen zu vermeiden.
RFC3986 definiert die Abfragekomponente als:
query = *( pchar / "/" / "?" )
pchar = unreserved / pct-encoded / sub-delims / ":" / "@"
pct-encoded = "%" HEXDIG HEXDIG
sub-delims = "!" / "$" / "&" / "'" / "(" / ")" / "*" / "+" / "," / ";" / "="
unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~"
Ein Prozentcodierungsmechanismus wird verwendet, um ein Datenoktett in einer Komponente darzustellen, wenn das entsprechende Zeichen dieses Oktetts außerhalb des zulässigen Satzes liegt oder als Begrenzer oder innerhalb der Komponente verwendet wird.
Die Schlussfolgerung ist, dass der XYZ-Teil Folgendes codieren sollte:
special: # % = & ;
Space
sub-delims
out of query set: [ ]
non ASCII encodable characters
Es sei denn, spezielle Symbole = &; sind Schlüssel = Werttrennzeichen.
Das Codieren anderer Zeichen ist zulässig, aber nicht erforderlich.