天天看點

HTTP協定 (2)了解請求封包

之前已經簡單的認識了一下HTTP協定

下面就看一下這個協定中一個重要的部分:請求

請求封包屬于HTTP封包,是從用戶端向服務端發送的請求

請求封包由三部分組成,分别是請求行(開始行),請求頭(消息報頭),請求正文(通常不用)

GET / HTTP/1.1                                #請求行
Host: www.baidu.com                           #請求頭
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Cookie: BAIDUID=E488017CE899228FF852BB2FA2762A62:FG=1; BIDUPSID=E488017CE899228FF852BB2FA2762A62; PSTM=1461377714; H_PS_PSSID=19003_17745_1434_18280_19781_19804_19806_19808_18559_15037_11966; BD_UPN=13314352; H_PS_645EC=556daOZJ2LejeLXIqU%2F9lyAAdB91FUm5%2FDSGrrkVbrESV9uFGgi7a4PwdfbO0YyMPSFx; BDSFRCVID=iFksJeC62RUdyn6RyrsGuyBx-2KKoWcTH6aoKGNAecjkR56n56F7EG0Pf3lQpYDbei5yogKKymOTHr7P; H_BDCLCKID_SF=tRKe_KDbJK03qRnnbJ5qhRIJbfTMeJQjaIOyB-OSHJOoDDvYQ4R5y4LdjG5NL438aJcNX4ob3-5BE4PzDxRvhp-S3-Aq54Ri32oC0RO_2M_hMRuGjxDbQfbQ0MDe2pojymna0RIaMR7JOpvwhfnxybjW0a62btt_JJ4OVCjP; BD_CK_SAM=1; BDRCVFR[Fc9oatPmwxn]=G01CoNuskzfuh-zuyuEXAPCpy49QhP8; BD_HOME=0
Connection: close                             
           

請求行也是由三個部分組成:請求方法,請求資源的URL,HTTP版本号

GET / HTTP/1.1 
           

其中GET就是請求方法 ,/就是請求資源的url,HTTP/1.1是HTTP的版本号

常見的HTTP請求方法有這些:

GET:用于擷取請求頁面的請求資訊。

HEAD:服務端不能響應裡響應消息主題,通常用來測試服務端是否存活。

POST:向服務端發送大量資料,其中含有請求内容,安全性相對GET要高。

PUT:向服務端發送請求,将請求中的實體存儲在請求資源下(檔案上傳)。

DELETE:向服務端請求删除請求資源(危險,一般不開放)。

TRACE:回顯服務端收到的請求。

CONNECT:隧道代理,将伺服器作為HTTP代理。

OPTIONS:向服務端發送請求,擷取在請求/響應過程中可一使用的功能。

在請求頭中是用戶端向伺服器發送傳遞請求的附加資訊以及自身資訊。

上面的請求頭中有下面幾種消息:

Host:被請求資源的internet主機和端口号。

User-Agent:用戶端使用的浏覽器,作業系統,版本以及其他資訊。

Accept:用戶端接收消息的類型。

Accept-Language:用戶端支援的語言。

Accept-Encoding:用戶端支援的編碼格式。

Cookie:伺服器與用戶端之間傳遞的狀态消息。

Connection:發送指定連接配接的選項。

除了上述這些,常見的消息還有:

Rerferer:通路目前URL的上一個URL(比較抽象)。

Range:請求實體的部分内容(通常用于多線程下載下傳)。

Accept-Charset:制定用戶端接收的字元集。