在HTTP连接建立以后,客户端首先发起一个请求:
GET /index.html HTTP/1.1 Host: www.example.com User-Agent: curl/7.43.0 (空行)
这个请求由3部分构成:
1.首行是一个请求行(Request Line)
2.接着是若干Header,一个一行
3.一个空行表示请求结束
请求行(Request Line)
请求行有特定的格式:
Request-Line = Method SP Request-URI SP HTTP-Version CRLF
以上:SP代表一个空格符,CRLF代表回车和换行符。对于
GET /index.html HTTP/1.1
来说,则有:
Method = GET Request-URI = /index.html HTTP-Version = HTTP/1.1
这句话告诉服务器:请把“/index.html”所代表的资源(在这里是某个HTML文件)发给我看;这次对话使用HTTP版本1.11。
HTTP方法(Method)决定了服务器将如何对所请求的资源进行操作。GET方法的意思就是“请把这个资源发给我看”。除了GET,常见的方法还有POST等,在后面的Web服务器 - 方法与资源中将会有更多介绍。参考这里了解更多:https://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods。
Request URI代表着服务器上的某种资源。它可以是一个文件,也可以是其他任何东西(比如服务器的当前时间),由服务器决定如何解读。
请求头(Reqeust Header)
Request Header向服务器提供请求的参数、以及客户端自身的一些信息等等。
这个Header
Host: www.example.com
告诉服务器:本次请求是针对名为“www.example.com”的主机的。
这个Header
User-Agent: curl/7.43.0
则是说:我的名字是“curl/7.43.0”。
HTTP定义了一系列Request Header,参考这里了解更多:https://en.wikipedia.org/wiki/List_of_HTTP_header_fields#Request_fields
不同的HTTP版本支持的功能集合不一样,如果服务器不支持某个版本,它会回复一个错误
感觉本站内容不错,读后有收获?小额赞助,鼓励网站分享出更好的教程