什么是http,http請求?

2021-03-12    分類: 網(wǎng)站建設

理解HTTP對于Web開發(fā)者人員至關重要,因為它促進了Web應用程序中的信息流動 —— 允許更好的用戶交互和改進了站點性能。

什么是http,http請求?

什么是 HTTP?

在客戶端-服務器模型中,客戶端和服務器以“請求-響應”消息模式交換消息:客戶端發(fā)送一個請求,服務器返回響應。

跟蹤這些消息比聽起來要復雜得多,因此客戶端和服務器遵循一種公共的語言和規(guī)則集,這樣他們就知道該怎么做了。這個語言或“協(xié)議”被叫做HTTP。

HTTP協(xié)議定義了語法(數(shù)據(jù)結構和編碼)、語義(與語法相關的含義)和時間(速度和排序)。每一次在客戶端和服務端的HTTP請求和響應被看做一個單一的HTTP事務。

HTTP 粗略描述

在深入了解細節(jié)之前,有一些關于HTTP的事情值得注意。

首先,HTTP是基于文本的,這意味著在客戶端和服務端交換的信息是一些文本。每一條信息包含兩個部分:頭部和主體。

其次,HTPP是一個應用層協(xié)議,這意味著它只是一個標準化主機通信方式的抽象層。HTTP本身不能傳輸數(shù)據(jù)。它仍然依賴底層的TCP/IP協(xié)議來從一個機器得到另外一個機器的請求和響應。

(提醒一下,TCP/IP是一個兩部分的系統(tǒng),是互聯(lián)網(wǎng)基礎的“控制系統(tǒng)”功能。更多TCP/IP內容,查看第一部分

最后,你也許在你的瀏覽器地址欄看到過“HTTPS”協(xié)議,并且想知道HTTP和HTTP+“S”是否相同。簡短的回答是有點,有輕微的差異。

一個簡單的HTTP請求或響應是未加密的,并且容易受到各種類型的安全攻擊。另一方面,HTTPS是一個更加安全的通信,它使用加密來保證安全。它代表HTTP/TLS/SSL。

SSL是一個安全協(xié)議,它給予客戶端和服務端以一種安全的方式進行網(wǎng)絡通信 —— 阻止監(jiān)聽和篡改 —— 當信息在網(wǎng)絡中傳播時。

客戶端通常通過使用一個特殊的端口號:443 來表明是否需要TLS/SSL連接。一旦客戶端和服務端同意使用TLS/SSL通信,它們通過執(zhí)行被叫做“TLS握手協(xié)議”來協(xié)商一個有狀態(tài)的通信??蛻舳撕头斩酥髸捗荑€,它們可以在彼此交互時使用這個密鑰加密和解密信息。

許多像Google和Facebook的主要網(wǎng)站使用THTPS,畢竟它能保證你的密碼、私人信息、信用卡信息在網(wǎng)絡上安全。

HTTP 細致描述

有了這些基礎知識,讓我們深入了解HTTP的結構。

我們可以先通過訪問 https://www.github.com 來與 Github 服務器進行通信。如果你使用的是安裝了 Firebug 拓展程序的谷歌或者火狐瀏覽器,你可以通過“網(wǎng)絡”選項卡來查看HTTP請求的詳細信息。如果你打開了這個網(wǎng)站,然后訪問 www.github.com 在地址欄輸入它,你應該看到像這樣的東西:

什么是http,http請求?

然后在左邊的面板,點擊第一個路徑, “github.com”。你現(xiàn)在應該看到這個:

什么是http,http請求?

HTTP 請求頭

HTTP 頭部主要包含元數(shù)據(jù)(關于數(shù)據(jù)的數(shù)據(jù))。元數(shù)據(jù)包含請求類型(GET vs POST vs PUT VS DELETE)、路徑、狀態(tài)碼,內容類型、用戶代理、cookie、post主體(有時),等等。

讓我們深入了解使用 Github 最重要的部分,從“響應頭”一節(jié)開始:

  • Request URL:https://githu?b.com/

  • 我們請求的URL

  • Request Method:GET

  • 使用HTTP方法的類型。在我們的案列中,我們的瀏覽器說:“嘿,Github 的瀏覽器,帶我到你的主頁?!?/p>

  • Status Code:200 OK

  • 一種標準化的方式,服務器告訴客戶端請求的結果。狀態(tài)碼200意味著服務器成功的找到了資源,并且把它發(fā)送給你。

  • Remote Address:192.30.252.129:443

  • 我們訪問的 Github 網(wǎng)站的 IP 地址和端口號。注意,它是端口443(這意味著我們正在用 HTTPS 而不是 HTTP)。

  • Content-Encoding:gzip

  • 我們收到的返回資源的編碼。在我們的案例中, Github 的服務器告訴我們,它發(fā)送返回的內容是壓縮過的。Github可能會壓縮文件,這樣你就可以有更快的下載時間。

  • Content-Type:text/HTML; charset=utf-8

  • 指定響應主體的數(shù)據(jù)表現(xiàn),包括類型和子類型。類型描述了數(shù)據(jù)類型,子類型指定這種數(shù)據(jù)類型的特定格式。在我們的案列中,我們將文本以 HTML 的形式發(fā)送回來。

  • 第二部分指定HTML文檔的字符編碼。這通常是UTF-8,就像上圖的例子一樣。

還有一堆消息頭信息,客戶端必須發(fā)送這些信息,以便服務端能夠知道如何回應??纯聪旅娴摹罢埱箢^”部分:

  • User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.73 Safari/537.36

  • 代表用戶進行操作的軟件。有時候一個網(wǎng)站需要知道它是如何被瀏覽的。所以瀏覽器發(fā)送這個用戶代理字符串以便于服務器可以使用它來決定訪問網(wǎng)站的內容。

  • Accept-Encoding:gzip, deflate, sdch

  • 指定瀏覽器愿意接受的內容編碼。我們看到gzip被列出來了,這就是為什么Github的服務器能夠以gzip格式的向我們發(fā)送信息。

  • Accept-Language:en-US,en;q=0.8

  • 描述我們想要的網(wǎng)頁語言。在我們的案例中,“en” 代表英語。

  • Host:github.com

  • 自身說明 :)

  • Cookie:_octo=GH1.1.491617779.1446477115; logged_in=yes; dotcom_user=iam-peekay;_gh_sess=somethingFakesomething FakesomethingFakesomethingFakesomethingFakesomethingFakesomethingFakesomethingFake; user_session=FakesomethingFake somethingFakesomethingFakesomethingFake; _ga=9389479283749823749; tz=America%2FLos_Angeles

  • web服務器可以存儲在用戶機器上的一段文本,然后再進行檢索。信息以名稱-值對儲存。例如,Github為我的請求儲存的一個名稱-值對是“dotcom_user=iam-peekay”,這告訴 Github 我的用戶名是“iam-peekay”。

這些名稱-值對是什么?

長話短說,我們留下了很多名稱-值對,但是這些名稱-值對是如何被創(chuàng)建的呢?

無論什么時候,你瀏覽一個網(wǎng)站,它會在你的電腦上找到一個網(wǎng)站提前設置的cookie文件。

因此如我我正在瀏覽 www.github.com, 我的瀏覽器將會尋找 Github 已經(jīng)保存在我的硬盤中的cookie文件。如果他找到一個 cookie 文件,它將會在響應頭布發(fā)送所有的名稱-值對。

Github 的 web 服務器現(xiàn)在能夠用很多不同的方法使用這個 cookie 數(shù)據(jù)。例如基于我儲存的用戶設定來呈現(xiàn)內容,計算我訪問他們的網(wǎng)站的時間數(shù)量。

如果瀏覽器沒有發(fā)現(xiàn)cookie文件 —— 要么是因為這個網(wǎng)站在之前從來沒有被訪問過,要么因為用戶屏蔽或者刪除了它 —— 瀏覽器不會發(fā)送任何cookie數(shù)據(jù)。

在這個案列,Github 的服務器創(chuàng)建了一個新的 ID,作為名稱-值對,與它想要的任何其他的名稱-值對一起,并且通過 HTTP 頭部發(fā)送到我的計算機上,然后我的計算機將它們儲存在硬盤里。

HTTP 主體

正如你上面所看的,服務器擁有與客戶端通信所需要的大部分重要的元數(shù)據(jù)(關于數(shù)據(jù)的數(shù)據(jù))。

現(xiàn)在到主體來。

不難猜到,主體是信息的主體。基于請求的類型,它可能是空的。

在我們的案例中,你可以看到 “Response” 選項卡的主體。因為我們發(fā)送了一個 GET 請求到 www.github.com,, 它的主體包含 www.github.com, 的 HTML 頁面內容。

什么是http,http請求?

當然,這對顯示頁面是非常重要的。

附加練習

我希望這能讓你更好的理解HTTP的結構。在實踐中,當你瀏覽 www.github.com 時,你可以查看你的瀏覽器請求的所有其他的資源(圖片、javascripts 文件、等等)。

什么是http,http請求?

有了這一點,讓我們看一下一個客戶端能夠發(fā)起的各種HTTP的方式。

HTTP 方法

HTTP動詞或方法,告訴服務器如何處理被URL標識的數(shù)據(jù)。URLs 綜合被標記為特定的資源,當客戶端使用一個URL與一個HTTP動詞結合使用時,這將告訴服務器需要在哪個資源上執(zhí)行操作。

URL的示例包括:

  • GET http://www.exam?ple.com/users (get all users)

  • POST http://www.example.com/users/a-u?nique-id (create a new user)

  • PUT http://www.example.com/comments/a-uni?que-id (update a comment)

  • DELETE http://www.example.com/comments/a-un?ique-id (delete a comment)

當前名稱:什么是http,http請求?
瀏覽地址:http://muchs.cn/news/105073.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供虛擬主機、品牌網(wǎng)站制作、搜索引擎優(yōu)化、網(wǎng)站營銷動態(tài)網(wǎng)站、建站公司

廣告

聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

營銷型網(wǎng)站建設