1. 程式人生 > >WEB測試需要了解的一點HTTP請求基礎知識

WEB測試需要了解的一點HTTP請求基礎知識

HTTP:超文字傳輸協議,一個基於請求響應模式的、無狀態的協議。

1、HTTP請求與響應的結構

GET /  HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
Accept-Language: en-us
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT)
Host: hypothetical.ora.com
Connection: Keep-Alive 
HTTP/1.1 200 OK
Date: Mon, 06 Dec 1999 20:54:26 GMT
Server: Apache/1.3.6 (Unix)
Last-Modified: Fri, 04 Oct 1996 14:06:11 GMT
ETag: "2f5cd-964-381e1bd6"
Accept-Ranges: bytes
Content-length: 327
Connection: close
Content-type: text/html
<title>Sample Homepage</title>

2、客戶端請求方法

GET:         請求伺服器資源。
HEAD:      請求文件的一些資訊,而不需要文件本身。功能同GET,伺服器只響應狀態行和標題頭,不響應實體主體。
POST:      提供自身的一些資訊(一般是填寫表單)。客戶端傳送資料到伺服器資料處理程式(伺服器接受)
PUT:         用於提供一個新的或替代文件,儲存在伺服器上。請求實體主體應存放在所請求的伺服器URL中 (伺服器儲存) 
DELETE: 刪除URI指定的伺服器資源
TRACE:   要求代理(proxies)在標題頭中宣告自己。
OPTIONS:客戶端想知道獲取資源還可以用其它什麼方法。
CONNECT:客戶端需要通過代理與HTTPS伺服器進行對話時使用。 請求通過代理訪問HTTPS伺服器 

如:

CONNECT請求:
CONNECT www.onsale.com:443 HTTP/1.0
User-Agent: Mozilla/4.08 [en] (WinNT; U ;Nav) 

CONNECT響應:
HTTP/1.0 200 Connection established
Proxy-agent: Apache/1.3.9 (Unix) 

3、響應狀態碼

100-199 資訊
200-299 客戶端請求成功
300-399 客戶端請求重定向,需要進一步動作
400-499 客戶端請求不完全
500-599 伺服器錯誤

4、cookie的傳遞與管理

示例:

GET /index.php HTTP/1.1
Host: learningweb
<Other Header here>

HTTP/1.1 200 OK
Set-Cookie: PHPSESSID=df1fe9fd16c5a2027deb86cf07e37ef3; path=/
<Other Header here>

GET /style.css HTTP/1.1
Cookie: PHPSESSID=df1fe9fd16c5a2027deb86cf07e37ef3
<Other Header here>

POST /login.php HTTP/1.1
Cookie: PHPSESSID=df1fe9fd16c5a2027deb86cf07e37ef3
<Other Header here>
……
   username=*******
   password=*******

HTTP/1.1 200 OK
Set-Cookie: user=55555%742%7Cg7e1a205475abd1c021fb313ce147521; path=/
<Other Header here>

GET /about/xygp.htm HTTP/1.1
Set-Cookie: PHPSESSID=df1fe9fd16c5a2027deb86cf07e37ef3; 
                   user=55555%742%7Cg7e1a205475abd1c021fb313ce147521; path=/
<Other Header here>
瀏覽器接收Cookie:
1. 從響應標題頭中提取所有的cookie。
2. 解析這些cookie的組成部分(名稱,值,路徑等等)。
3. 判定主機是否允許設定這些cookie。若允許,則把這些Cookie儲存在本地。 

瀏覽器傳送Cookie:
1. 根據請求的URL和本地儲存cookie的屬性,判斷哪些Cookie能被髮送。
2. 對於多個cookie,判定傳送的順序。
3. 把需要傳送的Cookie加入到請求HTTP頭中一起傳送。

5、授權

BASIC

GET /sample.html HTTP/1.0 
User-Agent: Mozilla/1.1N (Macintosh; I; 68K) 
Accept: */* 
Accept: image/gif 
Accept: image/x-xbitmap Accept: image/jpeg 

HTTP/1.0 401 Unauthorized 
Date: Sat, 20-May-95 03:32:38 GMT 
Server: NCSA/1.3 
MIME-version: 1.0 
Content-type: text/html 
WWW-Authenticate: BASIC realm="System Administrator" 

GET /sample.html HTTP/1.0 
User-Agent: Mozilla/1.1N (Macintosh; I; 68K) 
Accept: */* 
Accept: image/gif 
Accept: image/x-xbitmap 
Accept: image/jpeg 
Authorization: BASIC d2VibWFzdGVyOnpycW1hNHY= 

HTTP/1.0 200 OK 
Date: Sat, 20-May-95 03:25:12 GMT 
Server: NCSA/1.3 
MIME-version: 1.0 
Content-type: text/html 
Last-modified: Wednesday, 14-Mar-95 18:15:23 GMT 
Content-length: 1029 

[Entity-body data]