我一直在阅读网址中$ ! ; . ,
是'保留'字符。但我找不到他们保留的内容。
/ path delimiter
: port
? query
& glue get params
= param=val
\# link anchor
+ space
。
我的specific
个问题:
有谁知道$ ! ; . ,
用于什么?
:
请求uri中有任何特殊含义吗?
答案 0 :(得分:24)
RFC 2396是合法的。
对于规范的现代版本,请参阅:
是的,它在路径部分用作分隔符。
是的,它被用作端口的前缀,但它还有其他角色,例如用户信息分隔符,以及主机说明符的IP样式的分隔符。
令人惊讶的是,=字符不是一般URL,URI和IRI语法的一部分。它仅具有http(s)协议的特殊含义。这不是URL / IRI / URI
所固有的+作为空间替代的角色不是URL / URI / IRI语法的一部分。它仅仅是一些PHP程序的一个方便的发明,用于漂亮的URL目的。
这些在URL / URI / IRI语法中没有特殊含义。它们可以是子分隔符生成的一部分,可以在用户信息部分,future-IP部分,路径段或主机部分中使用。
答案 1 :(得分:3)
您的问题有点广泛,但RFC 2396应该包含您的所有答案。
许多URI包含由某些特殊字符组成或由其分隔的组件。这些字符称为“保留”,因为它们在URI组件中的使用仅限于其保留的用途。如果URI组件的数据与保留的目的冲突,则必须在形成URI之前对冲突的数据进行转义。
reserved = ";" | "/" | "?" | ":" | "@" | "&" | "=" | "+" | "$" | ","
上面的“保留”语法类是指URI中允许的那些字符,但在通用URI语法的特定组件中可能不允许这些字符;它们用作第3节中描述的组件的分隔符。
“保留”集中的字符不会在所有上下文中保留。实际上在任何给定URI组件中保留的字符集由该组件定义。通常,如果使用转义的US-ASCII编码替换字符,则URI的语义会发生变化,从而保留字符。