1. 程式人生 > >http協議中的請求與響應

http協議中的請求與響應

HTTP(HyperText Transport Protocol)是超文字傳輸協議的縮寫,是瀏覽器客戶端與伺服器端請求和應答的標準。

一、http請求:

GET /test/hello HTTP/1.1                -- 請求行
Host: localhost:8080                    -- 請求頭(多個key-value物件)
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:35.0) Gecko/20100101 Firefox/35.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-cn,en-us;q=0.8,zh;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Connection: keep-alive
                                      -- 一個空行
name=eric&password=123456             --(可選)實體內容

請求分為請求行、請求頭、實體內容三部分。

1、請求行:

GET /test/hello?name=yip&age=26 HTTP/1.1 
POST /test/index.html HTTP/1.1

請求行中包含請求方式、請求資源、協議版本。

1)請求方式:get和post較常用

  get請求:

    a)位址列(URI)會跟上引數資料。以?開頭,多個引數之間以&分割。

    b)GET提交引數資料有限制,不超過1KB。

    c)GET方式不適合提交敏感密碼。

    d)注意:瀏覽器直接訪問的請求,預設提交方式是GET方式。

  post請求:

    a)引數不會跟著URI後面。引數而是跟在請求的實體內容中。沒有?開頭,多個引數之間以&分割。

    b)POST提交的引數資料沒有限制。

    c)POST方式提交敏感資料。

2)請求資源:

URL: 統一資源定位符。http://www.baidu.com/home/xman/data/tipspluslist?indextype=manht。只能定位網際網路資源。是URI 的子集。

URI:統一資源標記符。/home/xman/data/tipspluslist?indextype=manht。用於標記任何資源。可以是本地檔案系統,區域網的資源,可以是網際網路。

3)協議版本:

http1.0:當前瀏覽器客戶端與伺服器端建立連線之後,只能傳送一次請求,一次請求之後連線關閉。

http1.1:當前瀏覽器客戶端與伺服器端建立連線之後,可以在一次連線中傳送多次請求。(基本都使用1.1)

2、請求頭:

Accept: text/html,image/*       -- 瀏覽器接受的資料型別
Accept-Charset: ISO-8859-1      -- 瀏覽器接受的編碼格式
Accept-Encoding: gzip,compress  --瀏覽器接受的資料壓縮格式
Accept-Language: en-us,zh-      --瀏覽器接受的語言
Host: www.it315.org:80          --(必須的)當前請求訪問的目標地址(主機:埠)
If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT   --瀏覽器最後的快取時間
Referer: http://www.it315.org/index.jsp            -- 當前請求來自於哪裡
User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)    --瀏覽器型別
Cookie:name=eric                -- 瀏覽器儲存的cookie資訊
Connection: close/Keep-Alive    -- 瀏覽器跟伺服器連線狀態。close: 連線關閉  keep-alive:儲存連線。
Date: Tue, 11 Jul 2000 18:23:51 GMT      -- 請求發出的時間

3、實體內容:

POST提交的引數會放到實體內容中

二、http響應

HTTP/1.1 200 OK                   --響應行
Server: Apache-Coyote/1.1         --響應頭(key-vaule)
Content-Length: 24 
Date: Fri, 30 Jan 2015 01:54:57 GMT
                                          -- 一個空行
this is hello servlet!!!                  -- 實體內容
響應分為響應行、響應頭、實體內容三部分。

1、響應行:

響應行中包括協議版本、狀態碼、狀態描述。

1)協議版本:與請求中講到的是一樣的。

2)狀態碼及狀態描述:

  狀態碼        狀態描述                                        含義
   200              OK                                    客戶端請求成功

   302            Found                                 重定向

   400         Bad Request                         由於客戶端請求有語法錯誤,不能被伺服器所理解。

   404         Not Found                             請求的資源不存在,例如,輸入了錯誤的URL。

   500     Internal Server Error                 伺服器發生不可預期的錯誤,導致無法完成客戶端的請求。

2、響應頭:

Location: http://localhost/index.jsp   -- 表示重定向的地址,該頭和302的狀態碼一起使用。
Server:apache tomcat                   -- 表示伺服器的型別
Content-Encoding: gzip                 -- 表示伺服器傳送給瀏覽器的資料壓縮型別
Content-Length: 80                     -- 表示伺服器傳送給瀏覽器的資料長度
Content-Language: zh-cn                -- 表示伺服器支援的語言
Content-Type: text/html; charset=GB2312   -- 表示伺服器傳送給瀏覽器的資料型別及內容編碼
Last-Modified: Tue, 11 Jul 2000 18:23:51 GMT  -- 表示伺服器資源的最後修改時間
Refresh: 1;url=http://www.it315.org     -- 表示定時重新整理
Content-Disposition: attachment; filename=aaa.zip -- 表示告訴瀏覽器以下載方式開啟資源(下載檔案時用到)
Transfer-Encoding: chunked
Set-Cookie:SS=Q0=5Lb_nQ; path=/search   -- 表示伺服器傳送給瀏覽器的cookie資訊(會話管理用到)
Expires: -1                           -- 表示通知瀏覽器不進行快取
Cache-Control: no-cache
Pragma: no-cache
Connection: close/Keep-Alive           -- 表示伺服器和瀏覽器的連線狀態。close:關閉連線 keep-alive:儲存連線

3、實體內容:

瀏覽器上看到的資訊