http協議前端常識

http

圖片描述

介紹:http基於tcp/ip通訊來傳遞數據html

注意事項

  • http是無鏈接:每次鏈接只處理一個請求,服務器處理完請求後,並收到客戶端的應答後,即斷開鏈接;
  • http媒體是獨立的:只要客戶端和服務器端知道如何處理數據類型,任何數據均可以用http傳送;
  • http無狀態:無狀態是指協議對於事物處理沒得記憶能力;

消息結構

1.http客服端請求包括:請求行、請求頭部、空行和請求數據git

圖片描述

2.http響應:狀態行、消息報頭、空行、響應正文github

http請求方法

  • http1.0:get、post和head
  • http1.1新增五種請求方式: delete、put、connect、 tarce和options
方法 描述
get 向特定資源發起請求
post 向指定資源提交數據進行數據處理。數據包含在請求體中,post請求可能用於新的資源的建立以及已有資源的修改
head 相似與get請求,只不過沒有返回體,用於獲取包含在響應消息頭中的元信息
put 向指定資源上傳最新內容
delete 請求服務器刪除指定資源
trace 回顯服務器收到的請求,主要用於測試或診斷
connect http1.1中預留給可以將鏈接改成管道方式的代理服務器
options 返回服務器對特定資源支持的http方法,用來向服務器發送‘*’的請求來測試服務器的功能性

常見首部字段含義介紹

首部和方法配合工做,共同決定客戶端和服務端能作什麼事情api

通用首部

客戶端和服務端均可以使用的首部瀏覽器

首部 描述
Connection 容許客戶端與服務端指定與請求/響應相鏈接有關的選項
Date 提供日期和時間標誌,說明報文是什麼時間建立的
MIME-Version 給出發送給端MIME版本
Trailer 若是報文傳輸採用分塊傳輸(chunked transfer encoding)方式,就能夠用這個首部列出位於報文拖掛部分的首部集合
Transfer-Encoding 告訴接受端爲了保證報文的可靠傳輸,對報文采用了什麼編碼方式
Update 給出了發送端可能想要「升級」使用新版或協議
Via 顯示報文通過的中間節點(代理、網關)

請求首部

請求報文特有的,爲服務器提供一些額外的信息,好比客戶端但願接收到什麼樣的數據類型緩存

請求的信息性首部

首部 描述
Client-Ip 提供運行客戶端機器的IP地址
From 提供客戶端用戶的E-mail地址
Host 給出接收請求服務器的地址和端口號
Referer 提供包含當前請求URL的文檔的URL
UA-color 提供客戶端顯示器的顯示顏色有關的信息
UA-CPU 給出客戶端CPU類型和製造商
UA-Disp 提供了客戶端顯示器能力有關的信息
UA-OS 提供客客戶機器上運行的操做系統和版本
UA-Pixels 提供了客戶端顯示器的像素信息
User-Agent 將發送請求的應用程序名稱告知服務器

Accept首部

首部 描述
Accept 告訴服務器可以發送哪些媒體類型
Accept-Charset 告訴服務器可以發送哪些字符集
Accept-Encoding 告訴服務器可以發送哪些編碼方式
Accept-Language 告訴服務器可以發送哪些語言
TE 告訴服務器可使用哪些擴展傳輸編碼

條件請求首部

首部 描述
Expect 容許客戶端列出請求所要求的服務器行爲
If-Match 若是實體標記與文檔當前的實體標記相匹配,就獲取這份文檔
If-Modify-Since 除非在某個指定的日期以後資源被修改過,不然就限制這個請求
If-None-Match 若是實體標記與文檔當前的實體不相符,就獲取文檔
If-Range 容許對文檔的某個範圍就行條件請求
If-Unmodified-Since 除非在某個指定日期以後資源沒有被修改過,不然就限制這個請求
Range 若是服務器支持範圍請求,就請求資源的指定範圍

安全請求受首部

首部 描述
Authorization 包含了客戶端提供給服務器,以便對其自身進行數據驗證
Cookie 客戶端用它想服務端發送一個令牌————它並非真正的安全首部,確實隱含了安全功能
Cookie2 用來講明請求端支持的Cookie版本

代理請求首部

首部 描述
Max-Forward 在通往服務器的的路徑上,將請求轉給其餘代理或網關的最大次數————與TARCE方法一塊兒使用
Proxy-Authorization 與Authorization首部相同,但這個首部是在與代理進行認證時使用的
Proxy-Connection 與Connection首部相同,但這個首部是在與代理創建鏈接時使用的

響應首部

響應報文有本身的首部集,以遍爲客服端提供信息安全

響應的信息性首部

首部 描述
Age (從最初建立開始)響應持續時間
Publick 服務器爲其資源支持的請求方法列表
Retry-After 若是資源不可用的話,在此日期或時間重試
Server 服務器應用程序軟件的名稱和版本
Title 對於html文檔來講,就是HTML文檔的源端給出的標題
Wraning 比緣由短語中,更詳細的警告報文

協商首部

首部 描述
Accept-Ranges 對此資源來講,服務器可接受的數據類型
Vary 服務器查看其餘首部 列表,可能會使響應發生變化;也就是說,這是一個首部列表,服務器會根據這些首部的內容挑選出最合適的資源版本發送給客戶端

安全響應首部

首部 描述
Proxy-Authenticate 來自代理對客戶端的質詢列表
Set-Cookie 不是真正的安全首部,但隱含安全功能;能夠在客戶端設置一個安全令牌,以遍服務端對客戶端進行標誌
Set-Cookie2 與Set-Cookie相似
WWW-Authenticate 來自服務器對客戶端的質詢列表

實體首部

實體首部用於實體主體部分的首部服務器

內容首部

首部 描述
Content-Base 解析主體中相對URL時使用的基礎URL
Content-Enconding 對主題執行的任意編碼方式
Content-Language 理解主體時最適宜使用的天然語言
Content-Length 主體的長度或者尺寸
Content-Location 資源實體所處的位置
Content-MD5 主體的MD5校驗和
Content-Range 在整個資源中此實體表示的資源範圍
Content-Type 這個主題的對象類型

實體緩存首部

首部 描述
ETag 與此實體相關的實體標記
Expires 實體不在有效,要從原始的源端再次獲取此實體的日期和時間
Last-Modified 這個實體最後一次被修改的日期和時間

狀態嗎

狀態碼爲客戶端提供一種理解事務處理結果的快捷方式hexo

  • 100-199: 信息性狀態碼
狀態碼 緣由短語 含義
100 Continue 說明收到了客戶端的請求初始部分,請客戶端繼續。發送這個狀態碼後,服務端在收到請求後必須進行響應
101 Switching Protocols 說明服務器端正在根據客戶端的指定,將協議切換爲Update首部所列的協議
  • 200-299: 成功狀態碼

客戶端發送請求時,這些請求一般都是成功的tcp

狀態碼 緣由短語 含義
200 OK 請求沒有問題,實體的主體部分包含請求的資源
201 Created 用於建立服務器的對象請求(好比 PUT),響應的實體部分中應該包含各類引用了以建立的資源的URL,Location首部包含的則是最具體的引用,服務器必須在發送這個狀態以前建立好對象
202 Accepted 請求已接受,但服務器還未對其執行任何操做。不能保證服務器會完成這個請求,只是意味着接受請求時,它看起來是有效的。服務器應該在實體的主體部分包含對請求狀態的描述,或許還應該對請求完成時間的估計(或者包含一個指針,指向能夠獲取此信息的位置)
203 Non-Authoritative Information 實體首部包含的信息不是來自於源服務器,而是來自資源的一份副本。若是中間節點上有一份資源副本,但沒法或者沒有對它所發送的資源有關的元信息(首部)進行驗證,就會出現這種狀況
204 No Content 響應報文中包含若干首部和一個狀態行,但沒有實體的主體部分。主要用於瀏覽器不轉爲新文檔的狀況下,對其進行更新(好比刷新一個表達頁面)
205 Reset Content 另外一個主要用於瀏覽器的代碼。負責告訴瀏覽器清除當前頁面中的全部html標籤
206 Partail Content 成功執行一個部分或者Range請求。稍後咱們會看到,客戶端能夠經過一些特殊的首部來獲取部分或範圍內的文檔————這個狀態碼就說明範圍請求成功響應中必須包括Content-Range、Date和ETag或者Content-Location首部
  • 300-399: 重定向狀態碼

重定向狀態碼要麼告知客戶端使用替代位置來訪問它們感興趣的資源,要麼提供一個可替代的響應而不是資源的內容。若是資源已被移動,可發送一個重定向狀態碼和一個可選的Location首部來告知客戶端資源已被移走,以及如今在哪裏能夠找到它

狀態碼 緣由短語 含義
300 Multiple Choices 客戶端請求實際是一個指向多個資源的URL時會返回這個狀態碼,好比服務器上某個HTML文檔有中文和英文版。返回這個代碼時會有一個選項列;這樣用戶就能夠選擇他但願使用的一項
301 Moved Permanently 在請求URL已被移出時。響應的Loaction首部中包含資源所處在的URL
302 Found 與301相似;可是客戶端應該使用Location首部給出的URL獲取臨時定位資源。未來的請求任使用老資源
303 Set Ohter 告訴客戶端應該使用另一個URL來獲取資源。新的URL資源位於響應報文Location首部。其主要目的是容許POST請求的響應將客戶端定向到某個資源上去
304 Not Modify 客戶端能夠經過所包含的請求首部,使其請求變成有條件的。若是客戶端發送一個GET請求,而最近資源未改變的話,就能夠用這個狀態碼來講明資源未被修改。帶有這個狀態碼的響應不該該包含實體部分
305 Use Proxy 用來講明必須經過一個代理來訪問資源。代理的位置由Location來給出。很重要的一點,客戶端是相對某個特定資源來解析這條響應的,不能假定全部請求,甚至全部對持有所請求的服務器請求都經過這個代理進行。若是客戶端錯誤的讓代理介入某個請求,可能引起破壞性的行爲,照成安全漏銅問題
306 未使用 未使用
307 Temporary Redirect 與301狀態碼相似;但客戶端應該使用Location首部給出的URL來臨時定位資源。未來的資源應該用老的URL
  • 400-499: 客戶端錯誤狀態碼

有時候客戶端會發送一個服務器沒法處理的東西,好比格式錯誤的請求報文,或者最多見的時候一個不存在的URL

狀態碼 緣由短語 含義
400 Bad Request 用於告訴客戶端發送了一個錯誤的請求
401 Unauthorized 與適當的首部一塊兒返回,在這個首部中請求客戶端在獲取資源的訪問權以前,對本身進行認證
402 Payment Required 狀態碼未使用
403 Forbidden 用於說明請求被服務器拒絕。若是服務器說明爲何拒絕請求,能夠包含實體的主體部分進行描述。但這個狀態碼一般是服務器不想說明緣由的時候使用
404 Not Found 用於說明服務器說明沒法找到請求的URL。一般會包含一個實體,以便於客戶端應用程序給用戶看
405 Method Not Allowed 發送的請求中帶有所請求的URL不支持的方法時,會使用此狀態碼。因該在響應中包含Allow首部,以告訴客戶端對所請求的資源可使用哪些方法
406 Not Acceptable 客戶端能夠指定參數來講明它願意接受什麼類型的實體。服務器沒有與客戶端接受的URL相匹配的資源的時,使用此代碼。一般服務器會包含一些首部,以便客戶端弄清除爲何請求沒法知足
407 Proxy Authentication Required 與401類似,但用於要求對資源進行認證的代理服務器
408 Request Timeout 若是客戶端請求的時間太長,服務器能夠返回此狀態碼,並關閉鏈接。超時時常隨服務器不一樣而不一樣,但一般對全部合法服務器來講,都是夠長的
409 Conflict 用於說明請求可能在資源上引起了一些衝突。服務器擔憂會引起衝突,能夠發送此狀態碼。響應中應該包含描述衝突的主體
410 Gone 與404相似,只是服務器曾經擁有過此資源。主要用於Web站點的維護,這樣服務器管理者就能夠在資源被移除的狀況下通知客戶端
411 Length Required 服務器要求請求報文中包含Content-length時使用
412 Precondition Falied 客戶端發送請求條件,且其中一個條件失敗的時候使用。客戶端包含了Expect首部時發送的就是條件請求
413 Request Entiny Too large 客戶端發送的實體主體部分比服務器可以或者但願處理的要大時,使用此狀態碼
414 Request Url Too Long 客戶端發送的請求中的請求URL比服務器可以或者但願處理的要長時,使用此狀態碼
415 Unsupported Media Type 服務端沒法理解或支持客戶端發送實體的內容類型時,使用此狀態碼
416 Request Range Not Satisfiable 請求報文是請求資源的某個範圍,而此範圍無效或沒法知足時,使用此狀態碼
417 Expection Failed 請求的Expect請求包含了一個指望,但服務器沒法知足此指望時,使用此狀態碼。若是代理或其餘中間程序有確切證聽說明源服務區器端會爲請求產生一個失敗指望,就能夠發送這個狀態碼
  • 500-599: 服務端錯誤狀態碼

有時候客戶端發送一個請求,服務器自身發生錯誤時

狀態碼 緣由短語 含義
500 Internal Server Error 服務器遇到一個妨礙它爲請求提供服務的錯誤時,使用此狀態碼
501 Not Inplemented 客戶端發送請求時超出服務器的能力範圍,使用此狀態碼
502 Bad Gateway 做爲代理或網關使用服務器從響應鏈的下一條鏈路上收到一條僞響應時,使用此狀態碼
503 Service Unavailable 用來講明服務器如今沒法爲請求提供服務,但未來能夠。若是服務器知道資源何時可用,能夠在響應中包含一個Retry-after首部
504 Gateway Timeout 與狀態碼408相似,只是這裏的響應來自一個網關或代理,他們在等待另外一服務器對其請求進行響應時超時了
505 HTTP Version Not Supported 服務器收到的請求使用了它沒法或不肯支持的協議版本,使用此狀態碼。有些服務器應用程序選擇不支持協議的早早期版本

在github上編輯此頁
博主我的博客
參考:http協議[http權威指南]

相關文章
相關標籤/搜索