ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# 1.5.1 客户端请求 ### 1.5.1 客户端请求 在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.1[1](#fn_1)。 HTTP**方法(Method)**决定了服务器将如何对所请求的资源进行操作。GET方法的意思就是“请把这个资源发给我看”。除了GET,常见的方法还有POST等,在后面的[Web服务器 - 方法与资源](http_method_and_resource.html)中将会有更多介绍。参考这里了解更多:[https://en.wikipedia.org/wiki/Hypertext\_Transfer\_Protocol#Request\_methods](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](https://en.wikipedia.org/wiki/List_of_HTTP_header_fields#Request_fields) > 1. 不同的HTTP版本支持的功能集合不一样,如果服务器不支持某个版本,它会回复一个错误。[↩](#reffn_1 "Jump back to footnote [1] in the text.")