Are slashes allowed in URL fragment or query?

2020-03-06 02:42发布

My understanding of the general form of a URL is that it looks as follows:

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

Can there be any forward slashes in either the query or the fragment? More generally, are there any characters that are specifically reserved for any single part of a URL?

标签: url
3条回答
狗以群分
2楼-- · 2020-03-06 03:23

of course you can use / in both fragment and query

An example:

<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

Basically you can use anything that can be encoded in an URL. moreinfo

查看更多
趁早两清
3楼-- · 2020-03-06 03:30

STD 66 defines the fragment as:

fragment = *( pchar / "/" / "?" )

So aside from characters from the pchar set (unreserved / pct-encoded / sub-delims / ":" / "@"), the / and the ? can be used in the fragment directly (i.e., percent-encoding is not needed).

The / is even mentioned explicitly in the text:

The characters slash ("/") and question mark ("?") are allowed to represent data within the fragment identifier. Beware that some older, erroneous implementations may not handle this data correctly when it is used as the base URI for relative references (Section 5.1).

查看更多
Summer. ? 凉城
4楼-- · 2020-03-06 03:34

Fragment can contain any character at all.

Query can contain any character except for #, as it is treated as marker (but you can use URL-encoding to still have it there)

So, in general, there are no any reserved characters as long as there is no ambiguity.

See RFC 3987 for the most up-to-date info. Your "general form" is not exactly right

查看更多
登录 后发表回答