我对URL的一般形式的理解是它看起来如下:
<scheme>://<host><path>?<query>#<fragment>
查询或片段中是否可以有正斜杠?更一般地说,是否有任何专门为URL的任何一部分保留的字符?
答案 0 :(得分:7)
STD 66 将fragment定义为:
fragment = *( pchar / "/" / "?" )
除了pchar
集(unreserved / pct-encoded / sub-delims / ":" / "@"
)中的字符外,/
和?
可以直接在片段中使用(即,百分比编码是不需要)。
/
甚至在文中明确提到:
允许字符斜杠(“/”)和问号(“?”)表示片段标识符中的数据。请注意,当某些较旧的错误实现用作相对引用的基URI时,可能无法正确处理此数据(第5.1节)。
答案 1 :(得分:1)
片段可以包含任何字符。
查询可以包含除#
之外的任何字符,因为它被视为标记(但您可以使用URL编码来保留它)
因此,一般来说,只要没有歧义,就没有任何保留字符。
有关最新信息,请参阅RFC 3987。你的“一般形式”并不完全正确
答案 2 :(得分:0)
当然,您可以/
和fragment
使用query
一个例子:
<a href='#vol/p'>hash example</a>
<div style='min-height:500px;'></div>
<div id='vol/p'>
<a href='http://jsfiddle.net/echo/jsonp?weep/sho/sdf=help'>get example</a>
</div>
基本上,您可以使用可在URL中编码的任何内容。 moreinfo