- 認識URL
以此網站爲例
http://www.mywebsite.com/sj/test/test.aspx?name=sviergn&x=true#stuff
Schema(指定底層使用的協議(例如:http, https, ftp)):http
host(HTTP服務器的IP地址或者域名):www.mywebsite.com
path(訪問資源的路徑):/sj/test/test.aspx
Query String(發送給http服務器的數據):name=sviergn&x=true
Anchor(錨):stuff
- 打開一個網頁須要瀏覽器發送屢次request
1.當你在瀏覽器輸入URL http://www.cnblogs.com 的時候,瀏覽器發送一個Request去獲取 http://www.cnblogs.com 的html. 服務器把Response發送回給瀏覽器.
2.瀏覽器分析Response中的 HTML,發現其中引用了不少其餘文件,好比圖片,CSS文件,JS文件。
3.瀏覽器會自動再次發送Request去獲取圖片,CSS文件,或者JS文件。
4.等全部的文件都下載成功後。 網頁就被顯示出來了。
- HTTP Request理解:客戶端向服務器發送的對服務器端資源進行增、刪、改、查交互的需求。
Request 消息分爲3部分,第一部分叫Request line, 第二部分叫Request header, 第三部分是body。header和body之間有個空行, 結構以下:
第一部分Request line:
`method/path-to-resourseHTTP/Version-number`
第二部分Request header:
`Header-Name-1:value`
`Header-Name-2:value`
空一行
第三部分body:
`optional request body`
第一部分中的Method表示請求方法,好比"POST","GET", Path-to-resoure表示請求的資源, Http/version-number 表示HTTP協議的版本號。當使用的是"GET" 方法的時候, body是爲空的。
- HTTP Response理解:服務器端對客戶端發送的HTTP Request作出的響應後返還給客戶端的內容。
和Request消息的結構基本同樣。 一樣也分爲三部分,第一部分叫Response line,第二部分叫Response header,第三部分是body。header和body之間也有個空行,結構以下:
第一部分Response line:
`HTTP/version status code message`
第二部分Response header:
`Header-Name-1:value`
`Header-Name-2:value`
空一行
第三部分body:
`optional response body`
第一部分中的HTTP/version-number表示HTTP協議的版本號,status-code 和message分別是狀態碼及其解釋,參見狀態碼。
- HTTP交互方法瞭解
Http協議定義了不少與服務器交互的方法,最基本的4種是GET,POST,PUT,DELETE。一個URL地址用於描述一個網絡上的資源,而HTTP中的GET, POST, PUT, DELETE就對應着對這個資源的查,改,增,刪4個操做。 咱們最多見的就是GET和POST了。GET通常用於獲取/查詢資源信息,而POST通常用於更新資源信息。
GET和POST的區別
1. GET提交的數據會放在URL以後,以?分割URL和傳輸數據,參數之間以&相連,如EditPosts.aspx?name=test1&id=123456. POST方法是把提交的數據放在HTTP包的Body中.
2. GET提交的數據大小有限制(由於瀏覽器對URL的長度有限制),而POST方法提交的數據沒有限制.
3. GET方式須要使用Request.QueryString來取得變量的值,而POST方式經過Request.Form來獲取變量的值。
4. GET方式提交數據,會帶來安全問題,好比一個登陸頁面,經過GET方式提交數據時,用戶名和密碼將出如今URL上,若是頁面能夠被緩存或者其餘人能夠訪問這臺機器,就能夠從歷史記錄得到該用戶的帳號和密碼.
html
-. HTTP狀態碼瞭解 web
HTTP狀態碼一共分爲五類,狀態碼的第一個數字表明瞭響應的五種狀態之一。以下:</p>瀏覽器
- 1XX:表示消息。請求已被接受,須要繼續處理。這類響應時臨時想用,只包含狀態行和這些可選的響應頭信息,並以空行結束。緩存
- 2XX:表示成功。請求已被服務器接收、理解、並接受。安全
- 3XX:表示重定向。須要客戶端採起進一步的操做才能完成請求。一般,這些狀態碼用來重定向,後續的請求地址(重定向目標)在本次響應的Location域中指明。服務器
- 4XX:表示錯誤。客戶端看起來可能發生了錯誤,妨礙了服務器的處理。除非響應的是一個HEAD請求,不然服務器就應該返回一個解釋當前錯誤情況的實體,以及這是臨時的仍是永久性的情況。這些狀態碼適用於任何請求方法。瀏覽器應當向用戶顯示任何包含在此類錯誤響應中的實體內容。網絡
- 5XX:表示服務器錯誤。這類狀態碼錶明瞭服務器在處理請求的過程當中有錯誤或者異常狀態發生,也有多是服務器意識到以當前的軟硬件資源沒法完成對請求的處理。除非這是一個HEAD請求,不然服務器應當包含一個解釋當前錯誤狀態以及這個情況是臨時的仍是永久的解釋信息實體。瀏覽器應當向用戶展現任何在當前響應中被包含的實體。網站
----------
常見狀態碼及其含義:code
- 200:OK/正常。請求成功,請求所但願的響應頭或數據體將隨此響應返回。
- 201:Created已建立。服務器在請求的響應中創建了新文檔;應在定位頭信息中給出它的URL。
- 301:Moved Permanently/永久遷移。指所請求的文檔在別的地方;文檔新的URL會在定位響應頭信息中給出。瀏覽器會自動鏈接到新的URL。
- 300:Multiple Choices/多重選擇。表示被請求的文檔能夠在多個地方找到,並將在返回的文檔中列出來。
- 303:See Other/參見其餘信息。和 30一、302 類似,只是若是最初的請求是 POST,那麼新文檔(在定位頭信息中給出)藥用 GET 找回。
- 304:Not Modified/沒有修改。若是客戶端發送了一個帶條件的GET請求且該請求已被容許,而文檔的內容(自上次訪問以來或者根據請求的條件)並無改變,則服務器應當返回這個狀態碼。304響應禁止包含消息體,所以始終以消息頭後的第一個空行結尾。
- 401:Unauthorized/未受權。表示客戶端在受權頭信息中沒有有效的身份信息時訪問受到密碼保護的頁面。
- 403: Forbidden/禁止。 表示除非擁有受權不然服務器拒絕提供所請求的資源。
- 404: Not Found/未找到。告訴客戶端所給的地址沒法找到任何資源。
- 500: Internal Server Error/內部服務器錯誤。服務器遇到了一個不曾預料的情況,致使了它沒法完成對請求的處理。orm
[參考這裏](https://www.cnblogs.com/diguage/archive/2012/07/22/2604099.html)
[參考這裏](https://www.cnblogs.com/bukudekong/p/3834020.html)