HTTP協議版本有兩種:HTTP1.0和HTTP1.1
它們倆的區別在於:HTTP1.0對於每個連接都只能傳送一個請求和響應,請求后就會關閉,HTTP1.0沒有Host字段;而HTTP1.1在同一個連接中可以傳送多個請求和響應,多個請求可以重疊和同時進行,HTTP1.1必須有Host字段
http請求過程:
1)請求超鏈接——》客戶端發送請求到服務器,請求包內容:協議版本號,求情地址,請求方式,請求頭和請求參數
2)服務器接受請求——》開始處理請求——》將響應包返回給客戶端,響應包內容:協議版本號,狀態碼,響應數據
3)前端收到響應包——》根據響應數據開始做相應處理
常見的請求頭字段含義:
請求行:標明了請求方法,請求URL,HTTP協議及版本
Accept:瀏覽器可接受的MIME類型,也就是代表着瀏覽器希望接收什么樣的文件
Accept-Charset:瀏覽器可接受的字符集
Accept-Encoding:瀏覽器能夠進行解碼的數據編碼方式
Accept-Language:瀏覽器所接受的語言
Authorization:授權信息
Content-Length:表示請求消息正文的長度
Host:客戶機通過這個頭告訴服務器,想訪問的主機名
If-Modified-Since:客戶機通過這個頭告訴服務器,資源的緩存時間
Referer:表明客戶機是從哪里來的
User-Agent:User-Agent頭域的內容包含發出請求的用戶信息,瀏覽器類型
Pragma:指定“no-cache”值表示服務器必須返回一個刷新后的文檔,即使它是代理服務器而且已經有了頁面的本地拷貝。
Connection:處理完這次請求后是否斷開連接還是繼續保持連接。
UA-Pixels,UA-Color,UA-OS,UA-CPU:由某些版本的IE瀏覽器所發送的非標准的請求頭,表示屏幕大小、顏色深度、操作系統和CPU類型。
響應頭:
常見的響應頭字段含義:
響應行:報文協議及版本,狀態碼以及狀態描述
Allow:服務器支持哪些請求方法(如GET、POST等)。
Content-Encoding:文檔的編碼(Encode)方法。
Content-Length:表示內容長度。只有當瀏覽器使用持久HTTP連接時才需要這個數據。
Content- Type:表示后面的文檔屬於什么MIME類型
Expires:告訴瀏覽器把回送的資源緩存多長時間,-1或0則是不緩存
Server:服務器通過這個頭告訴瀏覽器服務器的類型
WWW-Authenticate:客戶應該在Authorization頭中提供什么類型的授權信息
Get和Post的區別:
GET請求的數據會附在URL之后,即數據直接顯示在url中,以?分割URL和傳輸數據,參數之間以&相連
如:login.action?name=hyddd&password=idontknow&verify=%E4%BD%A0%E5 %A5%BD。
如果數據是英文字母/數字,原樣發送,如果是空格,轉換為+,如果是中文/其他字符,則直接把字符串用BASE64加密,得出如:%E4 %BD%A0%E5%A5%BD,其中%XX中的XX為該符號以16進制表示的ASCII。
而POST方法則會把數據放到請求數據字段中以&分隔各個字段,請求行不包含數據參數,地址欄也不會額外附帶參數。
另外GET方法是沒有報文體的
狀態碼:
1xx:表示請求已接收,繼續處理。比如100表示服務器正在處理客戶請求
2xx:表示請求已被成功接收,理解,接受。 比如200表示請求成功
3xx:表示客戶端被重定向到其他資源。 比如301表示本網頁永久性轉移到另一個地址;302表示重定向,瀏覽器自動跳轉新連接;304表示上次文檔已經保存,還可以繼續使用
4xx:請求有語法錯誤或請求無法實現 比如400表示請求有語法錯誤瀏覽器不能解析;403表示拒絕提供服務;404表示請求資源不存在
5xx:服務器執行請求時遇到錯誤 比如500服務器錯誤;503服務器當前不能處理,請稍后再試