客戶端發送請求的例子:html
GET /index.html HTTP/1.1 HOST: hackr.jp
GET表示請求的方式、方法(method),/index.html表示請求指定資源,稱爲URI(request-URI),最後HTTP/1.1表示客戶端使用的協議版本。git
請求報文是由請求方法、請求 URI、協議版本、可選的請求首部字段和內容實體構成的。github
服務器響應的例子:安全
HTTP/1.1 200 ok Date: Tue, 10 Jul 2012 06:50:15 GMT Content-Length: 363 Content-Type: text/html <html> ...
HTTP/1.1: 服務器的協議版本服務器
200 ok: 響應的狀態碼和緣由短語(簡短的解釋)
Date: Tue, 10 Jul 2012 06:50:15 GMT: 建立響應的時間
下面就是首部字段,而後空一行就是內容實體。cookie
GET方法用來請求已被已被URI識別(存在的)的資源。指定的資源經服務器解析後返回響應內容。網絡
向服務器傳輸主體,POST的主要目的並非獲取響應的主體內容。加密
與GET相似,只是響應不會返回報文主體部分,只有頭部。spa
用來查詢針對請求URI指定的資源支持的方法。
好比:代理
// 請求 OPTIONS * HTTP/1.1 Host: www.hackr.jp // 響應 HTTP/1.1 200 OK Allow: GET,POST,HEAD,OPTIONS
客戶端經過TRACE方法能夠查詢發出去的請求是怎麼被加工修改、篡改的。一個請求想要鏈接到原目標服務器可能經過代理中轉,TRACE方法就是用來確認鏈接過程當中發生的一系列的操做。可是TRACE方法原本不怎麼經常使用,在加上它容易引起XST(Cross-Site Tracing,跨站追蹤)攻擊,一般就更不會使用了
要求在與代理服務器通訊時創建隧道,實現用隧道協議進行TCP通訊。主要使用SSL(Secure Sockets Layer,安全套裝層)和TSL(Transport Layer Security,傳輸層安全)協議把通訊內容加密後經網絡隧道傳輸。
HTTP初期的版本中,每進行一次通訊就要斷開一次TCP鏈接,以當年通訊狀況來講,由於都是容量小的文本傳輸,因此即便這樣也沒有什麼問題,可是如今來看,文檔中包含大量的圖片是很日常的需求,因此這種通訊一次就斷掉的方法就不可取了。
在HTTP/1.1中,全部的默認鏈接都是持久鏈接,在HHTP/1.0中並無標準化。客戶端和服務端須要同時支持持久化才行。
相應的頭部:
1.請求報文(沒有Cookie信息狀態)
GET /reader/ HTTP/1.1 Host: hackr.jp * 首部字段沒有cookie的相關信息
2.響應報文(服務器生成Cookie信息)
HTTP/1.1 200 OK Date: Thu, 12 Jul 2012 07:12:20 GMT Server: Apache <Set-Cookie: sid=1123423543234325; path=/; expires=Wed,10-Oct-12 07:12:20 GMT> Content-Type: text/plain; charset=UTF-8
3.請求報文(自動發送保存着Cookie信息)
GET /image/ HTTP/1.1 Host: hackr.jp Cookie: sid=1123423543234325
github 歡迎Star,歡迎討論