OpenStack?HTTP協議

來源:互聯網
上載者:User

標籤:通訊   標識符   瀏覽器   客戶   訪問   sub   介紹   查詢   referer   

前言

超文字傳輸通訊協定 (HTTP)(HTTP,HyperText Transfer Protocol)是互連網上應用最為廣泛的一種網路通訊協定。所有的WWW檔案都必須遵守這個標準

HTTP是一個基於TCP/IP通訊協定來傳輸資料(HTML檔案、圖片檔案、查詢結果)

HTTP協議工作於用戶端-服務端架構為上。瀏覽器作為HTTP用戶端通過URL向HTTP服務端即WEB伺服器發送所有請求。Web伺服器根據接收到的請求後,向用戶端發送響應資訊。(請求的資料往往比較小,而返回的資料往往比較大。因為返回的資料中包含了Body)

HTTP是無狀態的 FTP是有狀態的

為什麼要學習http協議

主要是為了方便後面openstack的搭建,因為openstack中各個組件間相互連信就是基於restful api的,restful api 可以理解為一個url地址 也就是http協議進行通訊的

 

使用者是如何訪問到瀏覽器中的檔案呢?

 HTTP1.1 與1.0的區別

  1.HTTP/1.0協議使用非持久串連,即在非持久串連下,一個tcp串連只傳輸一個Web對象,;
  2.HTTP/1.1預設使用持久串連(然而,HTTP/1.1協議的客戶機和伺服器可以配置成使用非持久串連)。

    在持久串連下,不必為每個Web對象的傳送建立一個新的串連,一個串連中可以傳輸多個對象!

 

URL與URI

  URL:(Unifrom/Universal Resource Locator)的縮寫,即統一資源定位器

  URI:(Uniform Resource Identifier)的縮寫,即統一資源識別項 (代表一種標準)

  URL:協議名://網域名稱:連接埠  如http://www.cnblogs.com:80/

  URI:協議名://網域名稱:連接埠/路徑   如http://www.cnblogs.com:80/index.html

 

請求協議

請求格式(即瀏覽器發給服務端的內容格式)

http://host[:port][abs_path][空行][請求體]http:表示要通過http協議來定位網路資源host:表示合法的Internet主機網域名稱或IP地址port:用於指定一個連接埠號碼,擁有被請求資源的伺服器主機監聽該連接埠的TCP串連(如果port為空白,則使用預設的連接埠80)當伺服器的連接埠不是80時,需要指定連接埠號碼abs_path:指定請求資源的URI。空行:用來與請求體分隔開請求體:常用的就是GET或者POST(GET沒有請求體,POST有請求體)

瀏覽器發送請求到伺服器的內容就是這個格式,如果不是這個格式伺服器無法解讀。

 

GET請求:

  HTTP預設請求就是GET

  特點:

    沒有請求體(GET不夾雜使用者提交的資訊,例如使用者名稱密碼之類的這種隱私的資訊)

    請求資料必須在1K之內(socket協議規定)

    GET請求的資料會暴露在瀏覽器的地址欄中

  GET請求常用的操作

    瀏覽器地址欄直接給出URL地址,就是GET請求

    在頁面上點選連結,也是一個GET請求

    提交表單(例如登入在前端中from就是表單的意思)的時候預設時候是GET,但也可以設定為POST。在提交資料的時候基本上都是POST

執行個體

www.zhihu.com

Response:返回體(使用者擷取的頁面)

 

查看要求標頭資訊

點擊view source查看源碼 如

  1:GET請求。 “/” 代表要訪問的頁面。 http協議1.1

  2:Host訪問的主機

  3:連結類型:長串連

  4:Upgrade-Insecure-Requests

  5:user-agent:user用戶端一些簡單資訊

  6:accept:可以接收那些頁面類型。(text/html、xml、image、等)

  7:accept-encoding:字元編碼(讓電腦識字元)這裡代表的是壓縮格式

  8:Accept-Language:支援的語言格式

  9:Cookie:一個cookie對應一個session

  10:If-Modified-Since:當用戶端再次向伺服器發起請求時並發送這個時間,伺服器會根據自己的Last-Modified的時間對比,如果兩者時間一樣,那麼瀏覽器會從本地提取快取頁面面,大大緩解了伺服器的效能

 以上就是請求過程,用戶端請求結束後,服務端會返回兩個東西(一個是Response頁面,另一個是回應標頭Response Headers)

 

 查看回應標頭資訊

點擊view source查看源碼 如

  1:HTTP/1.1 200 ok  用戶端收到http協議,返回狀態代碼(請求成功)

  2:Content-Type:返回到用戶端的資料類型(返回什麼類型,用什麼方式解析這個類型)

  3:Date:顯示日期

  4:SWS:網站首頁所使用的web服務

  5:Expires:緩衝的到期時間

  6:Last-modified:上次頁面修改的時間

  7:Content-Encoding:使用什麼類型壓縮Response內容

  8:Content-Length:頁面大小(不包含圖片視頻等,只包含串連)

以上就是回應標頭的簡單介紹

 

一般資訊

  1:用戶端請求的url地址

  2:請求類型

  3:狀態代碼

  4:遠程地址

 

POST請求

   特點:

    1:資料不會出現在地址欄中

    2:資料大小沒上線

    3:有請求體

    4:請求體中如果有中文,會使用URL編碼

 執行個體

 1 <!DOCTYPE html> 2 <html> 3 <body> 4  5 <form method="post"> 6 user:<br> 7 <input type="text" name="username"> 8 <br> 9 password:<br>10 <input type="text" name="password">11 <input type="submit" value="login">12 </form>13 14 </body>15 </html>16 17 #表單測試

在pycharm中測試

 

  1 在地址欄中看到test.html是這個html檔案

  2 頁面後面的"?"代表著get請求

 

如果預設請求是get方法的話在輸入使用者名稱與密碼就會出現如下結果

 

剛剛輸入的使用者名稱與密碼列印到地址欄中了。這就是比較危險的了。但是如果設定為post請求就不會出現這種結果

因此 post請求就不會將使用者名稱與密碼列印到地址欄中。而是瀏覽器幫你隱藏起來。在網頁源碼中的頭資訊中可以看到下面多了一個Form Data 這就是你提交上去的資訊

Referer:請求來自哪個頁面那麼如果在百度點選連結到這裡,那麼就是Referer://http:www.baidu.com;如果在瀏覽器中直接輸入地址,則沒有這個referer值(用於防盜鏈功能)

 

狀態代碼

    狀態代碼的含義對於瀏覽器說很重要,返回不同的狀態代碼有不同的含義。例如200表示響應成功,302,表示重新導向等等

    200:請求成功

    3xx:重新導向

      4xx:用戶端錯誤(401訪問被拒絕。403禁止訪問。404未找到頁面等)

    5xx:服務端錯誤(500內部伺服器錯誤。503服務不可以。504網關逾時等)

OpenStack?HTTP協議

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.