HTTP基本原理

一.URI和URL

URI的全稱爲Uniform Resoure Identifier,即統一資源標誌符;URL的全稱爲「Universal Resoure Locator,即統一資源定位符。git

例如:https://github.com/favicon.ico是GitHub的網站圖標連接,它既是一個URI也是一個URL;即有這樣的一個圖標資源,咱們用URL/URI來惟一指定了它的訪問方式,這其中包括了訪問協議https,訪問路徑(即根目錄)和資源名稱favicon.ico。經過該連接,咱們即可以從互聯網上找到這個資源,這就是URL/URI。github

URL是URI的子集,即每一個URL都是URI,但並非每一個URI都是URL。由於UIRI還包括一個子類叫做URN,全稱爲Universal Resource Name即統一資源名稱。URN只命名資源而不指定如何定位資源,通常的網頁連接都稱爲URL。json

 

二.超文本

超文本,英文名稱爲hypertext,咱們在瀏覽器看到的網頁就是超文本解析而成,其網頁源代碼是一系列HTMl代碼。瀏覽器

 

三.HTTP和HTTPS

URL開頭會有http或https,這是訪問資源須要的協議類型。有時還會看到 ftp,sftp,smb開頭的URL,這些都是協議類型。緩存

HTTP的全稱是Hyper  Text Transfer Protocol,中文名叫做超文本傳輸協議。HTTP協議是用於從網絡傳輸超文本數據到本地瀏覽器的傳送協議,它能保證高效而準確的傳送超文本文檔,目前普遍使用的是HTTP1.1版本。安全

HTTPS的全稱是Hyper Text Transfer Protocol over Secure Socket Layer,是以安全爲目標的HTTP通道,爲HTTP的安全版,即HTTP下加入SSL層,簡稱爲HTTPS。服務器

HTTPS的安全基礎是SSL,所以經過它傳輸的內容都是通過SSL加密,它的主要做用能夠分爲兩種:網絡

1).創建一個信息安全通道來保證數據傳輸的安全。
2).確認網站的真實性,凡是使用了HTTPS的網站,均可以經過點擊瀏覽器地址欄的鎖標誌來查看網站認證以後的真實信息,也能夠經過CA機構頒發的安全簽章來查詢。

 

四.HTTP請求過程

當咱們在瀏覽器中輸入一個URL,回車以後就會在瀏覽器中觀察到網頁內容。在這個過程當中,瀏覽器向網站所在的服務器發送了一個請求,網站服務器接收到這個請求後進行處理和解析,而後返回對應的響應,接着傳回給瀏覽器。響應裏包含了頁面的源代碼等內容,瀏覽器對其進行解析,便將網頁呈現出來。app

當訪問百度時,在瀏覽器的開發者工具能夠看到以下內容:工具

其中各列的含義以下:

1).第一列Name:請求的名稱,通常會將URL最後一部份內容看成名稱。
2).第二列Status:響應的狀態碼,顯示爲200表明響應正常。經過狀態碼能夠判斷髮送了請求以後是否獲得了正常的響應。
3).第三列Type:請求的文檔類型。這裏是document,表明此次請求的是一個HTML文檔,內容就是一些HTML代碼
4).第四列Initiator:請求源。用來標記請求是由那個對象或進程發起的。
5).第五列Size:從服務器下載的文件和請求的資源大小。若是是從緩存中取得的資源,則該列會顯示from cache
6).第六列Time:發起請求到獲取響應所用的總時間。
7).第七列Waterfall:網絡請求的可視化瀑布流。

點擊該條有更多信息

General部分:

Request URL爲請求的URL;
Request Method爲請求的方法;
Status Code爲響應狀態碼;
Remote Address爲遠程服務器的地址和端口;
Referrer Policy爲Referrer判別策略。

Respond Headers(響應頭)部分:包含服務器的類型,文檔類型,日期等信息。

Request Headers(請求頭)部分:包含瀏覽器標識,Cookies,Host等信息。

 

五.請求

請求是由客戶端向服務器發出,能夠分爲4個部分的內容:請求方法(Request Method),請求的網站(Request URL),請求頭(Request Headers),請求體(Request Body)

1).請求方法

經常使用的請求方法有兩種:GET和POST

在瀏覽器中直接輸入URL並回車,便發起了一個GET請求,請求的參數會直接包含到URL裏。

POST請求大多在表單提交時發起;如登陸表單的提交。

GET與POST的區別:

1.GET請求中的參數包含在URL裏面,數據能夠在URL中看到,而POST請求的URL不會包含這些數據,數據都是以表單形式傳輸的1,會包含在請求體中。
2.GET請求提交的數據最多隻有1024個字節,而POST方式沒有限制。

其餘請求方法:

方法 描述
GET 請求頁面,並返回頁面內容
HEAD 相似於GET請求,但返回的響應沒有具體內容,用於獲取報頭
POST 大多用於提交表單或上傳文件,數據包含在請求體中
PUT 從客戶端向服務器傳送的數據取代指定文檔中的內容
DELETE 請求服務器刪除指定的頁面
CONNET 把服務器看成跳板,讓服務器代替客戶端訪問其餘網頁
OPTIONS 容許客戶讀查看服務器的性能
TRACE 回顯服務器收到的請求,主要用於測試和診斷

2.請求的網址

請求的網址,即統一資源定位符URL,它能夠惟一肯定咱們想請求的資源

3.請求頭

用來講明服務器要使用的附加信息。

經常使用的頭信息:

1.Accept:請求報頭域,用於指定客戶端可接受哪些類型的信息
2.Accept-Language:指定客戶端可接受的語言類型
3.Accpet-Encoding:指定客戶端可接受的內容編碼
4.Host:用於指定請求資源的主機IP和端口號,其內容爲請求URL的原始服務器或網關的位置,從HTTP1.1開始,請求必須包含此內容
5.CookieL:Cookies,這是網站爲了辨別用戶進行會話跟蹤而存儲在用戶本地的數據。它的主要功能是維持當前的訪問會話
6.Refer:用來標識這個請求是從哪一個頁面發過來的,服務器能夠拿到這一信息並做相應的處理,如來作源統計,防盜鏈處理。
7.User-Agent:簡稱UA,它是一個特殊的字符串頭,可使服務器識別客戶使用的操做系統及版本,瀏覽器及版本等信息,在爬蟲時加上該信息,能夠假裝成瀏覽器;
8.Content-Type:也叫互聯網媒體類型(Internet Media Type)或者MIME類型,在HTTP協議消息頭中,它用來表示具體請求中的媒體類型信息

4.請求體

請求體通常承載的內容是POST請求中的表單數據,而對於GET請求,請求體則爲空

 在構造POST請求時,須要使用正確的Content-Type

Content-Type 提交數據的方式
application/x-www-form-urlencode 表單數據
multipart/form-data 表單文件上傳
applicatiion/json 序列化JSON數據
text/xml XML數據

 

 

 

六.響應

響應由服務端返回客戶端,能夠分爲3部分:響應狀態碼(Response Status Code),響應頭(Response Headers)和響應體(Response Body)

1.狀態碼:https://baike.baidu.com/item/HTTP%E7%8A%B6%E6%80%81%E7%A0%81/5053660?fr=aladdin

2.響應頭

響應頭包含了服務器對請求的應答信息,如Content-Type,Server,Set-Cookie等。

經常使用的頭信息:

1.Date:標識響應產生的時間
2.Last-Modified:指定資源的最後修改時間
3.Content-Encoding:指定響應內容的編碼
4.Server:包含服務器的信息,好比名稱,版本號等
5.Content-Type:文檔類型,指定返回的數據類型是什麼
6.Set-Cookie:設置Cookies響應頭中的Set-Cookie告訴瀏覽器須要將此內容放在Cookies中,下次請求攜帶Cookies請求
7.Expires:指定響應的過時時間,可使代理服務器或瀏覽器將加載的內容更新到緩存中,
若是再次訪問時,就能夠直接從緩存中加載,下降服務器負載,縮短加載時間

3.響應體

響應的正文數據都在響應體體中,它是解析的目標。

相關文章
相關標籤/搜索