1. 程式人生 > >HTTP請求/響應報文結構

HTTP請求/響應報文結構

空格 dont acc 保存 mime 描述 網頁 斷開 解析

HTTP協議版本有兩種:HTTP1.0和HTTP1.1

它們倆的區別在於:HTTP1.0對於每個連接都只能傳送一個請求和響應,請求後就會關閉,HTTP1.0沒有Host字段;而HTTP1.1在同一個連接中可以傳送多個請求和響應,多個請求可以重疊和同時進行,HTTP1.1必須有Host字段

常見的請求頭字段含義:

請求行:標明了請求方法,請求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服務器當前不能處理,請稍後再試

HTTP請求/響應報文結構