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.
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 ?
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.
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 | ";" | ":" | "@" | "&" | "=" ]