Список допустимых символов для идентификатора фрагмента в URL-адрес?
Я использую идентификатор фрагмента для создания постоянной ссылки для событий AJAX в моем веб-приложении похож на этого парня. Что-то вроде:
http://www.myapp.com/calendar#filter:year/2010/month/5
Я сделал довольно много поиска, но не могу найти список допустимых символов для фрагмента idenitifer. Элемент W3C spec ничего не предлагает.
нужно ли мне кодировать символы так же, как URL-адрес в has вообще?
там, кажется, нет никакой хорошей информации о это где угодно.
3 ответа:
посмотреть RFC 3986.
fragment = *( pchar / "/" / "?" ) pchar = unreserved / pct-encoded / sub-delims / ":" / "@" unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~" pct-encoded = "%" HEXDIG HEXDIG sub-delims = "!" / "$" / "&" / "'" / "(" / ")" / "*" / "+" / "," / ";" / "="
так что вы можете использовать
!
,$
,&
,'
,(
,)
,*
,+
,,
,;
,=
, что-то соответствующее%[0-9a-fA-F]{2}
, что-то соответствующее[a-zA-Z0-9]
,-
,.
,_
,~
,:
,@
,/
и?
http://tools.ietf.org/html/rfc3986#section-3.5:
fragment = *( pchar / "/" / "?" )
и
pchar = unreserved / pct-encoded / sub-delims / ":" / "@" unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~" sub-delims = "!" / "$" / "&" / "'" / "(" / ")" / "*" / "+" / "," / ";" / "=" pct-encoded = "%" HEXDIG HEXDIG
Итак, комбинированный фрагмент не может содержат
#
, сырых%
,^
,[
,]
,{
,}
,\
,"
,<
и>
согласно RFC.
еще один RFC говорит об этом:RFC-1738
URL schemeparts for ip based protocols: HTTP httpurl = "http://" hostport [ "/" hpath [ "?" search ]] hpath = hsegment *[ "/" hsegment ] hsegment = *[ uchar | ";" | ":" | "@" | "&" | "=" ] search = *[ uchar | ";" | ":" | "@" | "&" | "=" ]