1、在瀏覽器地址欄輸入URL,按回車后經過了哪些步驟
1-1. 瀏覽器向DNS服務器請求解析該URL中的域名及所對應的IP地址;
1-2. 解析出IP地址后,根據該IP地址和默認端口80與服務器建立TCP連接;
1-3. 服務器對瀏覽器請求作出響應,並把對應的html文本發送給瀏覽器並關閉TCP連接;
1-4. 瀏覽器得到html文件后進行顯示內容;
2、請求
請求是由客戶端向服務器發送請求,分為四個部分內容:請求方法(Request Method)、請求地址(Request URL)、請求頭(Request Headers)、請求體(Request Body)。
2-1. 請求方法: 常見的請求方法有兩種:GET和POST。其他請求方法
方法 |
描述 |
---|---|
GET |
請求頁面,並返回頁面內容 |
HEAD |
類似於GET請求,只不過返回的響應中沒有具體的內容,用於獲取報頭 |
POST |
大多用於提交表單或上傳文件,數據包含在請求體中 |
PUT |
從客戶端向服務器傳送的數據取代指定文檔中的內容 |
DELETE |
請求服務器刪除指定的頁面 |
CONNECT |
把服務器當作跳板,讓服務器代替客戶端訪問其他網頁 |
OPTIONS |
允許客戶端查看服務器的性能 |
TRACE |
回顯服務器收到的請求,主要用於測試或診斷 |
GET和POST請求方法有如下區別。
-
-
-
- GET請求中的參數包含在URL里面,數據可以在URL中看到,而POST請求的URL不會包含這些數據,數據都是通過表單形式傳輸的,會包含在請求體中。
- GET請求提交的數據最多只有1024字節,而POST方式沒有限制。
-
-
一般來說,登錄時需要提交用戶名和密碼,其中包含了敏感信息,使用GET方式請求的話,密碼就會暴露在URL里面,造成密碼泄露,所以這里最好以POST方式發送。上傳文件和FORM表單提交時,由於文件內容比較大,也會選用POST方式。
2-2. 請求URL: 請求的網址,即統一資源定位符URL,它可以唯一確定我們想請求的資源。
2-3. 請求頭: 用來說明服務器要使用的附加信息,比較重要的信息有Cookie,Referer,User-Agent等。下面簡要說明一些常用的頭信息。
Accept:請求報頭域,用於指定客戶端可接受哪些類型的信息。
Accept-Language:指定客戶端可接受的語言類型。
Accept-Encoding:指定客戶端可接受的內容編碼。
Host:指定請求資源的主機ip和端口號,其內容為請求URL的原始服務器或網關的位置。
Cookie:也常用復數形式 Cookies,這是網站為了辨別用戶進行會話跟蹤而存儲在用戶本地的數據,它的主要功能是維持當前訪問會話。
Referer: 用來標識這個請求是從哪個頁面發過來的,服務器可以拿到這一信息並做相應的處理,如作來源統計,防盜鏈處理等。
User-Agent:簡稱UA,它是一個特殊的字符串頭,可以使服務器識別客戶使用的操作系統及版本、瀏覽器及版本等信息。
Content-Type:也叫互聯網媒體類型(Internet Media Type)或者MIME類型,在HTTP協議消息頭中,它用來表示具體請求中的媒體類型信息,例如,text/html代表HTML格式,image/gif代表GIF圖片,application/json代表JSON類型,更多對應關系可以查看對照表:http://tool.oschina.net/commons。
2-4. 請求體:請求體一般承載的內容是POST請求中的表單數據,而對於GET請求,請求體則為空。 下面列出了Content-Type和POST提交數據方式的關系。
Content-Type |
提交數據的方式 |
---|---|
application/x-www-form-urlencoded |
表單數據 |
multipart/form-data |
表單文件上傳 |
application/json |
序列化JSON數據 |
text/xml |
XML數據 |
3、響應
響應是由服務端返回給客戶端,可以分為三個部分:響應狀態碼:(Response Status Code)、響應頭(Response Headers)和響應體(Response Body)。
3-1. 響應狀態碼: 響應狀態碼表示服務器的響應狀態,如200代表服務器正常響應,404代表頁面未找到,500代表服務器內部發生錯誤。更多狀態碼請參考:http://www.runoob.com/http/http-status-codes.html。
3-2. 響應頭: 響應頭包含了服務器對請求的應答信息,如Content-Type、Server、Set-Cookie等,下面簡要說明下常用的頭信息。
Data: 標識響應產生的時間。
Last-Modified:指定資源的最后修改時間。
Content-Encoding: 指定響應內容的編碼。
Server: 包含服務器的信息,比如名稱,版本號等。
Content-Type: 文檔類型,指定返回的數據類型是什么,如text-html代表返回HTML文檔,application/x-javascript則代表返回Javascript文件,image/jpeg則代表返回圖片。
Set-Cookie: 設置Cookies。響應頭中的Set-Cookie告訴瀏覽器需要將此內容放在Cookies中,下次請求攜帶Cookies請求。
Expires:指定響應的過期時間,可以使代理服務器或瀏覽器將加載的內容更新到緩存中,下次訪問時就可以直接從緩存中加載,從而降低服務器負載,縮短加載時間。
3-3. 響應體: 響應體就是響應的消息體,如果是純數據就是返回純數據,如果請求的是HTML頁面,那么返回的就是HTML代碼,如果是JS就是JS代碼,如此之類。