URL片段或查询中是否允许斜杠?

时间:2013-12-06 07:36:16

标签: url

我对URL的一般形式的理解是它看起来如下:

<scheme>://<host><path>?<query>#<fragment>

查询或片段中是否可以有正斜杠?更一般地说,是否有任何专门为URL的任何一部分保留的字符?

3 个答案:

答案 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>

jsfiddle demo

基本上,您可以使用可在URL中编码的任何内容。 moreinfo