我正在使用片段标识符为我的网络应用程序中的 AJAX 事件创建一个永久链接,类似于 this guy。就像是:
http://www.myapp.com/calendar#filter:year/2010/month/5
我进行了大量搜索,但找不到片段标识符的有效字符列表。W3C 规范不提供任何东西。
我是否需要将字符编码为与一般 URL 相同的字符?
似乎在任何地方都没有关于此的任何好的信息。
我正在使用片段标识符为我的网络应用程序中的 AJAX 事件创建一个永久链接,类似于 this guy。就像是:
http://www.myapp.com/calendar#filter:year/2010/month/5
我进行了大量搜索,但找不到片段标识符的有效字符列表。W3C 规范不提供任何东西。
我是否需要将字符编码为与一般 URL 相同的字符?
似乎在任何地方都没有关于此的任何好的信息。
请参阅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]
, -
, .
, _
, ~
, :
, @
, /
, 和?
https://www.rfc-editor.org/rfc/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 | ";" | ":" | "@" | "&" | "=" ]