这是一个例子:
该url参数http://journals.plos.org/plosone/s/file?id=wjVg/PLOSOne_formatting_sample_main_body.pdf,不进行编码.它包含保留字符,如冒号,斜杠和问号.
为什么这仍然有效?为什么在没有它的情况下工作呢?
URI 的保留字符主要用作分隔符 - 它并不意味着它们可能不被使用,它只意味着它们具有特殊用途,如果您不需要它们用于此目的,则必须百分比编码它们.
查询组件以第一个开头,以第一个?结束#(如果有的话,以及URI的结尾).对于查询组件本身,没有定义保留字符.
URI标准RFC 3986 定义查询组件可以包含以下字符:
a- z,A-Z0- 9/ ? : @ ! $ & ' ( ) * + , ; = - . _ ~它甚至明确提到:
字符斜杠("/")和问号("?")可以表示查询组件中的数据.
示例URI的查询组件是:
embedded=true&url=http://journals.plos.org/plosone/s/file?id=wjVg/PLOSOne_formatting_sample_main_body.pdf
Run Code Online (Sandbox Code Playgroud)
除了字母,它包含=,&,:,/,.,?,_,所有这些都让在查询中.
请注意,查询组件中的name=value格式(由分隔开&)只是一个约定,而不是规范中定义的内容.