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、實體內容:
瀏覽器上看到的資訊