1、什么是HTTP協議
超文本傳輸協議(英文:HyperText Transfer Protocol,縮寫:HTTP)是一種用於分布式、協作式和超媒體信息系統的應用層協議。HTTP是萬維網的數據通信的基礎。
HTTP是一個客戶端終端(用戶)和服務器端(網站)請求和應答的標准(TCP)。通過使用網頁瀏覽器、網絡爬蟲或者其它的工具,客戶端發起一個HTTP請求到服務器上指定端口(默認端口為80)。我們稱這個客戶端為用戶代理程序(user agent)。應答的服務器上存儲着一些資源,比如HTML文件和圖像。我們稱這個應答服務器為源服務器(origin server)。在用戶代理和源服務器中間可能存在多個“中間層”,比如代理服務器、網關或者隧道(tunnel)。
2、HTTP請求方法
①GET
向指定的資源發出“顯示”請求。使用GET方法應該只用在讀取數據,而不應當被用於產生“副作用”的操作中,例如在Web Application中。其中一個原因是GET可能會被網絡蜘蛛等隨意訪問。
②POST
向指定資源提交數據,請求服務器進行處理(例如提交表單或者上傳文件)。數據被包含在請求本文中。這個請求可能會創建新的資源或修改現有資源,或二者皆有。
③HEAD
與GET方法一樣,都是向服務器發出指定資源的請求。只不過服務器將不傳回資源的本文部分。它的好處在於,使用這個方法可以在不必傳輸全部內容的情況下,就可以獲取其中“關於該資源的信息”(元信息或稱元數據)。
④PUT
向指定資源位置上傳其最新內容。
⑤DELETE
請求服務器刪除Request-URI所標識的資源。
⑥TRACE
回顯服務器收到的請求,主要用於測試或診斷。
⑦OPTIONS
這個方法可使服務器傳回該資源所支持的所有HTTP請求方法。用'*'來代替資源名稱,向Web服務器發送OPTIONS請求,可以測試服務器功能是否正常運作。
⑧CONNECT
HTTP/1.1協議中預留給能夠將連接改為管道方式的代理服務器。通常用於SSL加密服務器的鏈接(經由非加密的HTTP代理服務器)。
3、HTTP狀態碼
4、HTTP無狀態
HTTP協議是無狀態的,指的是協議對於事務處理沒有記憶能力,服務器不知道客戶端是什么狀態。也就是說,打開一個服務器上的網頁和你之前打開這個服務器上的網頁之間沒有任何聯系。HTTP是一個無狀態的面向連接的協議,無狀態不代表HTTP不能保持TCP連接,更不能代表HTTP使用的是UDP協議(無連接)。
5、HTTP無連接
限制每次連接只能處理一次請求
6、HTTP綜合
7、HTTP響應
8、時間戳
時間戳用於版本更新,解決瀏覽器緩存
緩存狀態碼:200 from memory cache 不訪問服務器,直接讀取緩存 ,從內存當中讀取
200 from disk cache 不訪問服務器,直接讀取緩存,從磁盤當中讀取
304 訪問服務器,發現數據沒有更新,服務器返回次狀態碼,然后再從緩存中讀取數據
9、為什么要在http請求后加上時間戳
URL 的末尾追加了時間。這就確保了請求不會在它第一次被發送后即緩存,而是會在此方法每次被調用后重新創建和重發;此 URL 會由於時間戳的不同而稍微有些不同。這種技巧常被用於確保到腳本的 POST 每次都會實際生成新請求且 Web 服務器不會嘗試緩存來自服務器的響應。