web-dev-qa-db-fra.com

Liste des caractères valides pour l'identifiant de fragment dans une URL?

J'utilise l'identifiant du fragment pour créer un permalien pour les événements AJAX dans mon application Web similaire à ce type . Quelque chose comme:

http://www.myapp.com/calendar#filter:year/2010/month/5

J'ai fait pas mal de recherches mais je ne trouve pas de liste de caractères valides pour le fragment idenitifer. Le spécification W3C n'offre rien.

Dois-je encoder les caractères de la même manière que l'URL en général?

Il ne semble y avoir aucune bonne information à ce sujet nulle part.

84
sohtimsso1970

Voir RFC 3986 .

fragment    = *( pchar / "/" / "?" )
pchar         = unreserved / pct-encoded / sub-delims / ":" / "@"    
unreserved    = ALPHA / DIGIT / "-" / "." / "_" / "~"
pct-encoded   = "%" HEXDIG HEXDIG
sub-delims    = "!" / "$" / "&" / "'" / "(" / ")"
                 / "*" / "+" / "," / ";" / "="

Vous pouvez donc utiliser !, $, &, ', (, ), *, +, ,, ;, =, quelque chose qui correspond %[0-9a-fA-F]{2}, quelque chose qui correspond [a-zA-Z0-9], -, ., _, ~, :, @, /, et ?

96
Artefacto

http://tools.ietf.org/html/rfc3986#section-3.5 :

fragment    = *( pchar / "/" / "?" )

et

pchar         = unreserved / pct-encoded / sub-delims / ":" / "@"
unreserved    = ALPHA / DIGIT / "-" / "." / "_" / "~"
sub-delims    = "!" / "$" / "&" / "'" / "(" / ")"
              / "*" / "+" / "," / ";" / "="
pct-encoded   = "%" HEXDIG HEXDIG

Donc, combiné, le fragment ne peut pas contenir #, un brut %, ^, [, ], {, }, \, ", < et > selon le RFC.

30
kennytm

Un autre RFC en parle: RFC-1738

URL schemeparts for ip based protocols:
HTTP

httpurl        = "http://" hostport [ "/" hpath [ "?" search ]]
hpath          = hsegment *[ "/" hsegment ]
hsegment       = *[ uchar | ";" | ":" | "@" | "&" | "=" ]
search         = *[ uchar | ";" | ":" | "@" | "&" | "=" ]
1
sirkazey