HTTP基礎知識(二)

來源:互聯網
上載者:User

標籤:記憶體   負載   php   版本   bsp   客戶   version   cache   請求   

接著上一章的內容:HTTP基礎知識(一)  二、簡單的HTTP協議1、用戶端:請求訪問文本或映像等資源的一端稱為用戶端;伺服器端:提供資源響應的一端 2、以百度為例子這是要求標頭:

 

在起始行開頭的HTTP/1.1表示伺服器對應的HTTP版本,GET表示請求的方法,第二行開始的就是內容實體。

 

請求報文詳解 
Header 解釋 樣本
Accept 指定用戶端能夠接收的內容類型 Accept: text/plain, text/html
Accept-Charset 瀏覽器可以接受的字元編碼集。 Accept-Charset: iso-8859-5
Accept-Encoding 指定瀏覽器可以支援的web伺服器返回內容壓縮編碼類別型。 Accept-Encoding: compress, gzip
Accept-Language 瀏覽器可接受的語言 Accept-Language: en,zh
Accept-Ranges 可以請求網頁實體的一個或者多個子範圍欄位 Accept-Ranges: bytes
Authorization HTTP授權的授權認證 Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
Cache-Control 指定請求和響應遵循的緩衝機制 Cache-Control: no-cache
Connection 表示是否需要持久串連。(HTTP 1.1預設進行持久串連) Connection: close
Cookie HTTP請求發送時,會把儲存在該請求網域名稱下的所有cookie值一起發送給web伺服器。 Cookie: $Version=1; Skin=new;
Content-Length 請求的內容長度 Content-Length: 348
Content-Type 請求的與實體對應的MIME資訊 Content-Type: application/x-www-form-urlencoded
Date 請求發送的日期和時間 Date: Tue, 15 Nov 2010 08:12:31 GMT
Expect 請求的特定的伺服器行為 Expect: 100-continue
From 發出請求的使用者的Email From: [email protected]
Host 指定請求的伺服器的網域名稱和連接埠號碼 Host: www.zcmhi.com
If-Match 只有請求內容與實體相匹配才有效 If-Match: “737060cd8c284d8af7ad3082f209582d”
If-Modified-Since 如果請求的部分在指定時間之後被修改則請求成功,未被修改則返回304代碼 If-Modified-Since: Sat, 29 Oct 2010 19:43:31 GMT
If-None-Match 如果內容未改變返回304代碼,參數為伺服器先前發送的Etag,與伺服器回應的Etag比較判斷是否改變 If-None-Match: “737060cd8c284d8af7ad3082f209582d”
If-Range 如果實體未改變,伺服器發送用戶端丟失的部分,否則發送整個實體。參數也為Etag If-Range: “737060cd8c284d8af7ad3082f209582d”
If-Unmodified-Since 只在實體在指定時間之後未被修改才請求成功 If-Unmodified-Since: Sat, 29 Oct 2010 19:43:31 GMT
Max-Forwards 限制資訊通過代理和網關傳送的時間 Max-Forwards: 10
Pragma 用來包含實現特定的指令 Pragma: no-cache
Proxy-Authorization 串連到代理的授權認證 Proxy-Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
Range 只請求實體的一部分,指定範圍 Range: bytes=500-999
Referer 先前網頁的地址,當前請求網頁緊隨其後,即來路 Referer: http://www.zcmhi.com/archives/71.html
TE 用戶端願意接受的傳輸編碼,並通知伺服器接受接受尾加頭資訊 TE: trailers,deflate;q=0.5
Upgrade 向伺服器指定某種傳輸協議以便伺服器進行轉換(如果支援) Upgrade: HTTP/2.0, SHTTP/1.3, IRC/6.9, RTA/x11
User-Agent User-Agent的內容包含發出請求的使用者資訊 User-Agent: Mozilla/5.0 (Linux; X11)
Via 通知中間網關或Proxy 伺服器地址,通訊協定 Via: 1.0 fred, 1.1 nowhere.com (Apache/1.1)
Warning 關於訊息實體的警告資訊 Warn: 199 Miscellaneous warning
 響應報文詳解 
Header 解釋 樣本
Accept-Ranges 表明伺服器是否支援指定範圍請求及哪種類型的分段請求 Accept-Ranges: bytes
Age 從原始伺服器到代理緩衝形成的估算時間(以秒計,非負) Age: 12
Allow 對某網路資源的有效請求行為,不允許則返回405 Allow: GET, HEAD
Cache-Control 告訴所有的緩衝機制是否可以緩衝及哪種類型 Cache-Control: no-cache
Content-Encoding web伺服器支援的返回內容壓縮編碼類別型。 Content-Encoding: gzip
Content-Language 響應體的語言 Content-Language: en,zh
Content-Length 響應體的長度 Content-Length: 348
Content-Location 請求資源可替代的備用的另一地址 Content-Location: /index.htm
Content-MD5 返回資源的MD5校正值 Content-MD5: Q2hlY2sgSW50ZWdyaXR5IQ==
Content-Range 在整個返回體中本部分的位元組位置 Content-Range: bytes 21010-47021/47022
Content-Type 返回內容的MIME類型 Content-Type: text/html; charset=utf-8
Date 原始伺服器訊息發出的時間 Date: Tue, 15 Nov 2010 08:12:31 GMT
ETag 請求變數的實體標籤的當前值 ETag: “737060cd8c284d8af7ad3082f209582d”
Expires 響應到期的日期和時間 Expires: Thu, 01 Dec 2010 16:00:00 GMT
Last-Modified 請求資源的最後修改時間 Last-Modified: Tue, 15 Nov 2010 12:45:26 GMT
Location 用來重新導向接收方到非請求URL的位置來完成請求或標識新的資源 Location: http://www.zcmhi.com/archives/94.html
Pragma 包括實現特定的指令,它可應用到響應鏈上的任何接收方 Pragma: no-cache
Proxy-Authenticate 它指出認證方案和可應用到代理的該URL上的參數 Proxy-Authenticate: Basic
refresh 應用於重新導向或一個新的資源被創造,在5秒之後重新導向(由網景提出,被大部分瀏覽器支援) Refresh: 5; url=http://www.atool.org/httptest.php
Retry-After 如果實體暫時不可取,通知用戶端在指定時間之後再次嘗試 Retry-After: 120
Server web伺服器軟體名稱 Server: Apache/1.3.27 (Unix) (Red-Hat/Linux)
Set-Cookie 設定Http Cookie Set-Cookie: UserID=JohnDoe; Max-Age=3600; Version=1
Trailer 指出頭域在分塊傳輸編碼的尾部存在 Trailer: Max-Forwards
Transfer-Encoding 檔案傳輸編碼 Transfer-Encoding:chunked
Vary 告訴下遊代理是使用緩衝響應還是從原始伺服器請求 Vary: *
Via 告知代理用戶端響應是通過哪裡發送的 Via: 1.0 fred, 1.1 nowhere.com (Apache/1.1)
Warning 警告實體可能存在的問題 Warning: 199 Miscellaneous warning
WWW-Authenticate 表明用戶端請求實體應該使用的授權方案 WWW-Authenticate: Basic
  3、HTTP是一種無狀態(stateless)協議。HTTP協議自身不對請求和響應之間的通訊狀態進行儲存。也就是說在HTTP這個層級,協議對於發送過的請求或響應都不做持久化處理。作用:這是為了更好地處理大量事務,確保協議的延展性。缺點:使用者登入到一家購物網站,跳轉到該站的其他頁面也需要能繼續保持登入狀態,但是HTTP無法實現。解決方案:Cookie技術 4、HTTP/1.1中可使用的方法  (1)GET方法:擷取資源  GET方法用來請求訪問已被URI識別的資源。指定的資源經伺服器端解析後返迴響應內容。  

 

  以百度為例,訪問百度時使用的GET方法的請求,而返回的是一個頁面資源

 

  (2)POST方法:傳輸實體主體  雖然GET方法也可以傳輸實體的主體,但一般不用GET方法進行傳輸。   

  用POST方法會把url隱藏在表單中,而用GET方法時url會暴露在使用者面前,有可能會遭到sql注入等非法攻擊,所以在用 get請求時需要在後台對sql進行處理。

  經過了一番的搜尋,我發現百度裡的請求都是GET請求,於是在網上求解,原來,用POST請求的話訊息體(網頁表單內 容)和訊息頭都會傳送到伺服器,這樣會導致傳送時的資料量大;而GET請求只傳送訊息頭,所以用GET請求會比POST快。(百 度那麼多大神,小小的sql注入,他們一早就有對策了- -)   (3)PUT方法:傳輸檔案  PUT方法用來傳輸檔案。就像FTP協議的檔案上傳一樣,要求在請求報文的主體中包含檔案內容,然後儲存到請求URI指定的位置。  但是HTTP/1.1的PUT方法自身不帶驗證機制,任何人都可以上傳檔案,存在安全性問題,所以一般的網站不適用該方法。  本質上來講, PUT和POST極為相似,都是向伺服器發送資料,但它們之間有一個重要區別,PUT通常指定了資源的存放位置,而POST則沒有,POST的資料存放位置由伺服器自己決定。   (4)HEAD方法:獲得報文首部  HEAD方法和GET方法一樣,只是不返回報文主體部分。用於確認URI的有效性及資源更新的日期時間等。   (5)DELETE方法:刪除檔案  此方法與PUT相反,是按請求URI刪除指定的資源。不過因為不帶驗證機制一般的網站也是不會用DELETE方法。   (6)OPTIONS方法:詢問支援的方法  此方法用於查詢針對請求URI指定的資源支援的方法。   (7)TRACE方法:追蹤路徑  TRACE方法是讓web伺服器端將之前的請求通訊環回給用戶端的方法,能夠確認串連過程中發生的一系列操作。  但是此方法容易引發跨站追蹤(XST)攻擊,不常被用到。   (8)CONNECT方法:要求用隧道協議串連代理    此方法要求在與Proxy 伺服器通訊時建立隧道,實現用隧道協議進行TCP通訊。主要使用SSL(Secure Sockets Layer,安全套接層)和TLS(Transport Layer Security, 傳輸層安全)協議把通訊內容加密後經網路隧道傳輸。  有了隧道協議,才會有VPN的安全性和私人性。   (9)HTTP/1.0和HTTP/1.1支援的方法表  

5、在HTTP協議的初始版本中,每進行一次HTTP通訊就要斷開一次TCP連結。這種情況對當時的小容量文本傳輸來說沒有多大問題,但是現在每一個頁面都包含各種圖片、視頻等,在發送請求訪問HTML頁面資源的同時,也會請求該頁麵包含的其他資源,如果每次請求都發生TCP斷開,會增加通訊量的開銷

到了HTTP/1.1使用了持久串連方法來保持TCP串連狀態。這樣能減少了TCP串連的重複建立和斷開所造成的額外開銷,減輕了伺服器端的負載。 6、管線化(pipelining)方式:能夠做到同事並行發送多個請求,而不需要一個接一個地等待響應。 7、Cookie應用情境:HTTP的無狀態協議,若伺服器要記住每一個用戶端的狀態會加重CPU及記憶體的消耗。而Cookie技術是通過在請求和響應報文中寫入Cookie資訊來控制用戶端的狀態。Cookie原理:(1)根據從伺服器端發送的響應報文內的一個叫做Set-Cookie的首部欄位資訊,通知用戶端儲存Cookie。當下次用戶端再往該伺服器發送請求時,用戶端會自動在請求報文中加入Cookie值後發送出去。(2)伺服器端發現用戶端發送過來的Cookie後,會去檢查究竟是從哪一個用戶端發來的串連請求,然後對比伺服器上的記錄,最後得到之前的狀態資訊。

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.