2011-05-18 93 views
4
GET http://stackoverflow.com/questions HTTP/1.1 
Host: stackoverflow.com 

HTTP标准是否要求向GET请求提供绝对或相对地址?什么时候请求是在代理中?关于http请求标准

我问这个,因为我觉得它与Host信息重复。

回答

5
GET/HTTP/1.1 

是一个有效的请求行。完整的路径是没有必要的。

5.1.2 Request-URI中

请求URI是统一资源 标识符(3.2节)和 标识在其上 应用请求该资源。

Request-URI = "*" | absoluteURI | abs_path | authority 

对Request-URI中的四个选项是 取决于 请求的性质。星号“*”表示 该请求不适用于 特定资源,而是适用于服务器 本身,并且仅当使用的 方法不一定将 应用于资源时才被允许。一个示例将是

OPTIONS * HTTP/1.1 

的请求被给代理制成时,绝对URI形式是必需的。 代理被请求转发 请求或从有效的 缓存中提供服务,并返回响应。注意 ,代理可以将请求 转发给另一个代理或直接转发给由absoluteURI指定的 服务器。为了避免请求循环,代理必须能够识别其所有服务器名称,包括任何别名,本地 变体和数字IP 地址。一个例子请求行会 是:

GET http://www.w3.org/pub/WWW/TheProject.html HTTP/1.1 

要允许过渡到 absoluteURIs在未来 版本HTTP的所有请求,所有的HTTP/1.1服务器 必须接受绝对URI形式 请求,即使HTTP/1.1客户端 只会在 代理的请求中生成它们。

+0

但是,主机头是必需的。 – hammar 2011-05-18 06:45:58

+0

是的,我打算说'请求行'而不是'请求'。我已经更新了答案。 – SpliFF 2011-05-18 06:50:00

+0

这是标准做法,从绝对URI或使用主机头提取主机名? – DriverBoy 2011-05-18 09:23:33

0

您可以查阅HTTP RFC

3.2.1在HTTP常规语法

的URI可以用绝对形式表示或相对于一些 已知基本URI [11],这取决于其使用的上下文。

0

主机详细信息不是必需的。相对路径已足够