聊一聊HTTP

Http簡介

  • Http協議是 Hyper Text Transfer Protocol(超文本傳輸協議)的縮寫,是用於服務器傳輸超文本到本地瀏覽器的傳輸協議
  • Http是一個基於TCO/IP的通訊協議來傳遞數據

Http的工做原理

Http的協議工做於客戶端-服務端的架構上。瀏覽器做爲Http客戶端經過URL向Http服務端及web服務器發送的全部請求web

Http三點注意事項

  • Http是無鏈接的:無鏈接的含義是每次鏈接只處理一個請求,服務器處理完客戶的請求,並收到客戶的應答後斷開鏈接 這種方式能夠節省傳輸的時間
  • Http是媒體獨立的:只要客戶端和服務端知道如何處理的數據內容,任何類型的數據均可以經過Http發送,客戶端以及服務器指定使用適合的MIMME-type內容類型
    • 瀏覽器顯示的內容都有HTML,XML,GIF,Flash等,瀏覽器經過MIME Type區分他們,決定用什麼內容什麼形式來顯示 --- 媒體類型一般經過Http協議,由Web服務器告知瀏覽器,更準確地說是經過Content-Type來表示的。例如Content-Type:text/HTML
  • Http:是無狀態協議,是指協議對於交互場景沒有記憶能力

Http的消息結構

Http客戶端請求消息結構

客戶端發送一個Http請求到服務器的請求消息包括如下格式 瀏覽器

Http服務器響應消息結構

Http響應也由四個部分組成,分別是:狀態行,消息報頭,空行和響應正文 緩存

Http的請求方法

  • 根據Http標準,Http可使用多種請求方式
  • Http1.0定義了三種請求方式:GET,POST,HEAD
  • Http1.1新增了六種請求方式:OPTIONS,PUT,PATCH,DELETE,TRACE和CONNECT方法
-------------------------
GET 請求指定頁面信息,並返回實體主體
HEAD 相似於GET請求,只不過返回的響應中沒有具體的內容,用於獲取報頭
POST 向指定資源提交數據進行處理請求(例如表單提交或者上傳文件)。數據被包含在請求體中,POST請求可能會致使新的資源創建和/或已有資源修改
PUT 向指定資源位置上傳其最新內容。
DELETE 請求服務去刪除Request-URI 所標識的資源
CONNECT Http/1.1 協議中預留給可以將鏈接改成管道方式的代理服務器。
OPTIONS 容許客戶端查看服務器的性能。
TRACE 回顯服務器收到的請求,主要用於測試或診斷。
PATCH 是對 PUT 方法的補充,用來對已知資源進行局部更新 。

Http請求頭信息

  • Accept:瀏覽器可接受的MIME類型,也就是表明着瀏覽器但願接受到什麼樣的文件
  • Accept-Charset:瀏覽器可接受的字符集
  • Accept-Encoding:瀏覽器可以進行解碼的數據編碼方式
  • Accept-Language:瀏覽器所接受的語言
  • Authorization:受權信息
  • Content-Length:表示請求消息的正文的長度
  • Host:客戶端經過這個頭告訴服務器,想訪問的主機名
  • If-Modified-Since:告訴服務器,資源的緩存時間
  • Referer:代表客戶機是從哪裏來
  • User-Agent:User-Agent頭域的內容包含發出請求的用戶信息,瀏覽器類型

Http響應頭信息

  • Allow:服務器支持的哪寫請求方式
  • Content-Encoding:文檔的編碼的方法
  • Content-Length:表示內容的長度
  • Content-Type:表示後面文檔屬於什麼MIME類型
  • Date:當前的GMT時間【能夠經過setDateHeader來設置這個頭,避免轉化時間格式的麻煩】
  • Expires:表示在何時文檔過時,不在進行緩衝
  • Server:服務器的名字
  • WWW-Authenticate:客戶應該在Authorization頭中提供什麼類型的受權信息

請求方式的區別

POST   VS   GET

  • GET後退按鈕/刷新無害,POST數據會被從新提交(瀏覽器應該告知用戶數據會被提交)
  • GET書籤可收藏,POST爲書籤不可收藏,GET能被緩存,POST不能緩存
  • GET的歷史參數會被保留在瀏覽器的歷史中,而POST請求不會
  • GET對數據長度有限制,當發送數據的時候GET方法想URL添加數據,URL的長度是受限制的 最大長度是2048個字符,POST無限制
  • GET只容許ASCII字符,POST沒有限制,也容許二進制數據
  • 與POST相比,GET的安全性比較差
  • GET只會產生一個TCP數據包,而POST會產生兩個TCP數據包;對於GET請求方式,瀏覽器會把header和data一塊兒發送出去,服務返回200響應,而對於POST,瀏覽器先發送header,服務器響應continue,瀏覽器在發送data,服務器響應200

POST   VS   PUT

  • PUT請求:若是兩個請求相同,後一個請求會把第一個請求覆蓋掉【因此PUT用來改資源】
  • POST請求:後一個請求不會把第一個請求覆蓋掉【全部POST用來增資源】
相關文章
相關標籤/搜索