2012-11-14 9 views
10

Welche Zeichen sind in einer URL-Abfragezeichenfolge zulässig?Was ist eine gültige URL-Abfragezeichenfolge?

Müssen Query-Strings einem bestimmten Format folgen?

+1

Alles andere als diese Bedürfnisse in einer URL dürfen maskiert werden, was in dieser Frage entkam werden muss: http: //stackoverflow.com/questions/2322764/what-characters-must-be-escaped-in-http-query-string –

Antwort

10

Per http://tools.ietf.org/html/rfc3986

In Abschnitt 2.2 reservierte Zeichen, werden die folgenden Zeichen aufgeführt:

reserviert = gen-delims/sub-delims

gen-delims = „:“/„/"/"? "/" # "/" ["/"] "/" @ "

sub-delims ="! "/" $ "/" & "/" '"/" ("/ ")"/"*"/„+“/„“/„“ /„=“

Die Spezifikation sagt dann:

Wenn Daten für eine URI-Komponente mit einem reservierten Charakter Zweck als unverträglich Delimiter, dann müssen die widersprüchlichen Daten Prozent codiert sein, bevor der URI gebildet wird.

Als nächstes wird in Abschnitt 2.3 Unreserved Charaktere, sind die folgenden aufgeführt:

unreserved = ALPHA/DIGIT/„-“// „_“/„~“

„“
+2

[RFC 3986 - ** Abschnitt 3.4 **] (http: //tools.ietf. org/html/rfc3986 # page-23) beschreibt speziell die Abfragezeichenfolge und enthält insbesondere die Unter-delims und eine Handvoll anderer. Zusammenfassend: 'A'-' Z', 'a'-' z', '0'-' 9', '-',' .', '_',' ~ ','! ',' $ ' , '&', '' ',' (',') ',' * ',' + ',', ','; ',' = ',': ',' ​​@ ','/',' ? ' – MrWhite

11

Wikipedia hat Ihre Antwort: http://en.wikipedia.org/wiki/Query_string

"URL Encoding: Einige Zeichen nicht Teil einer URL sein kann (zum Beispiel den Raum) und einige andere Zeichen haben eine besondere Bedeutung in einer URL: zum Beispiel kann das Zeichen # verwendet werden, um einen Unterabschnitt (oder ein Fragment) eines Dokuments weiter zu spezifizieren; Das Zeichen = wird verwendet, um einen Namen von einem Wert zu trennen. Eine Abfragezeichenfolge muss möglicherweise konvertiert werden, um diese Einschränkungen zu erfüllen. Dies kann mithilfe eines als URL-Codierung bekannten Schemas erfolgen.

Insbesondere kodiert die Abfragezeichenfolge verwendet die folgenden Regeln: ' '

  • Letters (AZ und az), Ziffern (0-9) und die Zeichen' -', '~' und '_' sind wie sie sind
  • SPACE ist codiert als '+' oder% 20 [citation needed]
  • Alle anderen Zeichen sind als% FF hexadezimale Darstellung mit beliebigen Nicht-ASCII-Zeichen kodiert, die zuerst als UTF-8 kodiert sind (oder eine andere spezifizierte Kodierung)

T Das Oktett, das dem Tildezeichen ("~") entspricht, wird oft von älteren URI-Verarbeitungsimplementierungen als "% 7E" codiert; die "% 7E" kann durch "~" ersetzt werden, ohne ihre Interpretation zu ändern. Die Kodierung von SPACE als '+' und die Auswahl von "wie ist" Zeichen unterscheidet diese Kodierung von RFC 1738. "

In Bezug auf das Format sind Abfragezeichenfolgen Name Wert Paare. Die? Trennt die Abfragezeichenfolge von der URLJedes Name-Value-Paar ist durch ein kaufmännisches Und getrennt (&), während der Name (Schlüssel) und der Wert durch ein Gleichheitszeichen (=) getrennt sind. z.B. http://domain.com?key=value&secondkey=secondvalue

Unter Struktur in der Wikipedia reference I bereitgestellt:

  • Das Fragezeichen wird als Trennzeichen verwendet und ist nicht Teil des Abfrage-String.
  • Der Abfrage-String besteht aus einer Reihe von Feld-Wert-Paaren
  • Innerhalb jedes Paares sind der Feldname und der Wert durch ein Gleichheitszeichen, '=' getrennt.
  • Die Reihe der Paare ist getrennt durch das kaufmännische Und, '&' (oder Semikolon, ';' für in HTML eingebettete und nicht von einem ... erzeugte URLs; siehe unten).
  • W3C empfiehlt, dass alle Webserver Semikolonseparatoren zusätzlich zu Et und Trennzeichen [6] unterstützen, um application/x-www-form-urlencoded-Abfragezeichenfolgen in URLs in HTML-Dokumenten zu ermöglichen, ohne Entity-Escape-Et-Zeichen.
+0

Können Sie den letzten Absatz zitieren? –

+0

Ich habe diesen Absatz basierend auf persönlicher Erfahrung hinzugefügt, aber ich habe weitere Informationen hinzugefügt und hinzugefügt, die ich finden könnte, um das zu bestätigen. Dabei habe ich festgestellt, dass Schlüsselwerte nicht nur durch ein kaufmännisches Und-Zeichen getrennt sind, sondern auch durch ein Semikolon, obwohl ich es vorher noch nie gesehen habe. Das Fragezeichen ist nicht Teil des QS, sondern ein Trennzeichen. – cbillowes

+1

Im Text der Antwort: "Jedes Name-Wert-Paar hat ein kaufmännisches Und-Zeichen", der Wortlaut ("vorangestellt") ist irreführend. Weiter unten gibt es das richtige "... Paare sind getrennt ...". – laune

1

Dieser Link enthält die Antwort und formatierte Werte, die Sie alle benötigen.

https://perishablepress.com/url-character-codes/

Für Ihre Bequemlichkeit, das ist die Liste:

<  %3C 
>  %3E 
#  %23 
%  %25 
{  %7B 
}  %7D 
|  %7C 
\  %5C 
^  %5E 
~  %7E 
[  %5B 
]  %5D 
`  %60 
;  %3B 
/ %2F 
?  %3F 
:  %3A 
@  %40 
=  %3D 
&  %26 
$  %24 
+  %2B 
"  %22 
space  %20 
+0

Beachten Sie, dass [Nur-Link-Antworten] (http://meta.stackoverflow.com/tags/link-only-answers/info) nicht empfohlen werden. SO-Antworten sollten der Endpunkt einer Suche nach einer Lösung sein (vs. ein weiterer Zwischenstopp von Referenzen, die im Laufe der Zeit abgestanden werden). Bitte beachten Sie, dass Sie hier eine eigenständige Zusammenfassung hinzufügen und den Link als Referenz beibehalten. – kleopatra