URL请求空间的HTTP请求

时间:2013-06-17 12:49:58

标签: html http url

为什么空格字符网址编码为%20? 我没有看到空间被认为是保留字符的原因。

3 个答案:

答案 0 :(得分:5)

因为在很多情况下空间被用作分隔符(带有参数,HTTP命令等的程序),所以它经常需要转义,在unix命令行中使用\,在windows命令行中使用环境,URL中包含%20等

在HTTP协议中,当您尝试访问http://www.foo.com时,浏览器会在端口80上打开与服务器www.foo.com的连接,并发送命令:

GET http://www.foo.com HTTP/1.0    
Accept : text/html

语法为“METHOD URL HTTPVERSION”

如果您尝试请求http://www.foo.com/my page.html而不是http://www.foo.com/my%20page.html,服务器会认为“page.html”是您正在寻找的HTTPVersion ...

答案 1 :(得分:2)

请参阅RFC 3986 Section 2.3

2.3.  Unreserved Characters

   Characters that are allowed in a URI but do not have a reserved
   purpose are called unreserved.  These include uppercase and lowercase
   letters, decimal digits, hyphen, period, underscore, and tilde.

      unreserved  = ALPHA / DIGIT / "-" / "." / "_" / "~"

答案 2 :(得分:2)

因为HTTP请求的Request-Line定义为:

Method (Space) Request-URI (Space) HTTP-Version CRLF

严格遵守规范的朴素HTTP服务器将执行以下操作:

splitInput = requestLine.Split(' ')

method = splitInput[0]
requestUri = splitInput[1]
httpVersion = splitInput[2]

如果你在URL中允许空格,那将会中断。