# 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.")
- 前言
- 1 Web概述
- 1.1 什么是Web
- 1.2 超文本和超鏈接
- 1.3 URL
- 1.4 DNS
- 1.5 HTTP
- 1.5.1 客戶端請求
- 1.5.2 服務器應答
- 1.5.3 進一步了解HTTP
- 1.6 HTTPS
- 2 Web瀏覽器
- 2.1 HTML
- 2.1.1 文檔類型聲明
- 2.1.2 標簽和屬性
- 2.1.3 文檔結構
- 2.1.4 DOM
- 2.1.5 進一步了解HTML
- 2.2 CSS
- 2.2.1 樣式與樣式表
- 2.2.2 樣式表語法
- 2.2.3 級聯樣式表
- 2.2.4 進一步了解CSS
- 2.3 JavaScript
- 2.3.1 script標簽
- 2.3.2 操縱DOM
- 2.3.3 jQuery
- 2.3.4 進一步了解JavaScript
- 2.4 Ajax
- 2.5 移動設備與響應式Web設計
- 3 Web服務器
- 3.1 方法與資源
- 3.2 狀態代碼
- 3.3 靜態內容與動態內容
- 3.4 編程語言與技術
- 3.4.1 CGI
- 3.4.2 PHP
- 3.4.3 Java
- 3.4.4 Python
- 3.4.5 Ruby
- 3.4.6 Node.js
- 3.5 RESTful Web API
- 3.6 服務器架構
- 3.7 Web緩存
- 3.8 服務器推送
- 4 數據庫
- 4.1 關系型數據庫
- 4.2 NoSQL數據庫
- 5 Web服務器的其他組件
- 5.1 Cron
- 5.2 消息隊列
- 5.3 郵件服務器
- 6 開發工具與技術
- 6.1 Git
- 6.1.1 Git基礎操作
- 6.1.2 Git基本原理
- 6.1.3 進一步了解Git
- 6.2 敏捷開發