美元符号$在网址中做什么?

时间:2013-11-18 14:24:09

标签: security url web

我一直在阅读网址中$ ! ; . ,是'保留'字符。但我找不到他们保留的内容。

/ path delimiter  
: port
? query  
& glue get params  
= param=val  
\# link anchor  
+ space

我的specific个问题:
有谁知道$ ! ; . ,用于什么?
:请求uri中有任何特殊含义吗?

2 个答案:

答案 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的语义会发生变化,从而保留字符。