亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

directory search
Guides Access control CORS Authentication Browser detection using the user agent Caching Caching FAQ Compression Conditional requests Connection management in HTTP 1.x Content negotiation Content negotiation: List of default Accept values Cookies CSP Messages Overview Protocol upgrade mechanism Proxy servers and tunneling Proxy servers and tunneling: Proxy Auto-Configuration (PAC) file Public Key Pinning Range requests Redirections Resources and specifications Resources and URIs Response codes Server-Side Access Control Session Guides: Basics Basics of HTTP Choosing between www and non-www URLs Data URIs Evolution of HTTP Identifying resources on the Web MIME Types MIME types: Complete list of MIME types CSP Content-Security-Policy Content-Security-Policy-Report-Only CSP: base-uri CSP: block-all-mixed-content CSP: child-src CSP: connect-src CSP: default-src CSP: font-src CSP: form-action CSP: frame-ancestors CSP: frame-src CSP: img-src CSP: manifest-src CSP: media-src CSP: object-src CSP: plugin-types CSP: referrer CSP: report-uri CSP: require-sri-for CSP: sandbox CSP: script-src CSP: style-src CSP: upgrade-insecure-requests CSP: worker-src Headers Accept Accept-Charset Accept-Encoding Accept-Language Accept-Ranges Access-Control-Allow-Credentials Access-Control-Allow-Headers Access-Control-Allow-Methods Access-Control-Allow-Origin Access-Control-Expose-Headers Access-Control-Max-Age Access-Control-Request-Headers Access-Control-Request-Method Age Allow Authorization Cache-Control Connection Content-Disposition Content-Encoding Content-Language Content-Length Content-Location Content-Range Content-Type Cookie Cookie2 Date DNT ETag Expect Expires Forwarded From Headers Host If-Match If-Modified-Since If-None-Match If-Range If-Unmodified-Since Keep-Alive Large-Allocation Last-Modified Location Origin Pragma Proxy-Authenticate Proxy-Authorization Public-Key-Pins Public-Key-Pins-Report-Only Range Referer Referrer-Policy Retry-After Server Set-Cookie Set-Cookie2 SourceMap Strict-Transport-Security TE Tk Trailer Transfer-Encoding Upgrade-Insecure-Requests User-Agent User-Agent: Firefox Vary Via Warning WWW-Authenticate X-Content-Type-Options X-DNS-Prefetch-Control X-Forwarded-For X-Forwarded-Host X-Forwarded-Proto X-Frame-Options X-XSS-Protection Methods CONNECT DELETE GET HEAD Methods OPTIONS PATCH POST PUT Status 100 Continue 101 Switching Protocols 200 OK 201 Created 202 Accepted 203 Non-Authoritative Information 204 No Content 205 Reset Content 206 Partial Content 300 Multiple Choices 301 Moved Permanently 302 Found 303 See Other 304 Not Modified 307 Temporary Redirect 308 Permanent Redirect 400 Bad Request 401 Unauthorized 403 Forbidden 404 Not Found 405 Method Not Allowed 406 Not Acceptable 407 Proxy Authentication Required 408 Request Timeout 409 Conflict 410 Gone 411 Length Required 412 Precondition Failed 413 Payload Too Large 414 URI Too Long 415 Unsupported Media Type 416 Range Not Satisfiable 417 Expectation Failed 426 Upgrade Required 428 Precondition Required 429 Too Many Requests 431 Request Header Fields Too Large 451 Unavailable For Legal Reasons 500 Internal Server Error 501 Not Implemented 502 Bad Gateway 503 Service Unavailable 504 Gateway Timeout 505 HTTP Version Not Supported 511 Network Authentication Required Status
characters

HTTP是一種允許獲取資源的協(xié)議,例如HTML文檔。它是Web上的任何數(shù)據(jù)交換和客戶端 - 服務器協(xié)議的基礎,這意味著請求由接收者(通常是Web瀏覽器)發(fā)起。一個完整的文檔是根據(jù)不同的子文檔重新獲得的,例如文本,布局描述,圖像,視頻,腳本等等。

客戶和服務器通過交換單個消息進行通信(而不是數(shù)據(jù)流)??蛻舳税l(fā)送的消息(通常是Web瀏覽器)稱為請求,而服務器發(fā)送的作為答案的消息稱為響應。

HTTP是在20世紀90年代初期設計的,它是一種隨著時間推移而發(fā)展的可擴展協(xié)議。它是通過TCP或通過TLS加密的TCP連接發(fā)送的應用層協(xié)議,但理論上可以使用任何可靠的傳輸協(xié)議。由于其可擴展性,它不僅用于提取超文本文檔,還用于圖像和視頻或將內容發(fā)布到服務器,例如HTML格式的結果。HTTP還可用于獲取部分文檔以按需更新網(wǎng)頁。

基于HTTP的系統(tǒng)的組件

HTTP是一種客戶端 - 服務器協(xié)議:請求由一個實體,用戶代理(或代表它的代理)發(fā)送。大多數(shù)情況下,用戶代理是一個Web瀏覽器,但它可以是任何東西,例如抓取Web以填充和維護搜索引擎索引的機器人。

每個單獨的請求被發(fā)送到一個服務器,它將處理它并提供一個稱為響應的答案。例如,在這個請求和響應之間有許多實體,總稱為代理,它們執(zhí)行不同的操作并充當網(wǎng)關或高速緩存。

實際上,在瀏覽器和處理請求的服務器之間有更多的計算機:有路由器,調制解調器等等。由于Web的分層設計,這些隱藏在網(wǎng)絡層和傳輸層中。HTTP在應用程序層處于頂層。盡管診斷網(wǎng)絡問題很重要,但底層與HTTP描述無關。

Client: the user-agent

所述用戶代理是作用于用戶的代表任何工具。這個角色主要由Web瀏覽器執(zhí)行; 一些例外情況是工程師使用的程序和Web開發(fā)人員調試其應用程序。

瀏覽器始終是發(fā)起請求的實體。它永遠不是服務器(盡管多年來添加了一些機制來模擬服務器啟動的消息)。

為了呈現(xiàn)網(wǎng)頁,瀏覽器發(fā)送原始請求以從頁面獲取HTML文檔。然后解析該文件,獲取與執(zhí)行腳本相對應的其他請求,要顯示的布局信息(CSS)以及頁面中包含的子資源(通常為圖像和視頻)。Web瀏覽器然后混合這些資源以向用戶呈現(xiàn)完整的文檔,網(wǎng)頁。瀏覽器執(zhí)行的腳本可以在以后階段獲取更多資源,瀏覽器會相應地更新網(wǎng)頁。

網(wǎng)頁是超文本文件。這意味著顯示文本的某些部分是可以被激活的鏈接(通常通過點擊鼠標)來獲取新的網(wǎng)頁,允許用戶指導他們的用戶代理并通過網(wǎng)絡進行導航。瀏覽器在HTTP請求中轉換這些方向,并進一步解釋HTTP響應以向用戶提供明確的響應。

Web服務器

在通信通道的另一側,是服務器,它按照客戶的要求提供文檔。一臺服務器虛擬出現(xiàn)的只是一臺機器:這是因為它實際上可能是一組服務器,共享負載(負載平衡)或一個復雜的軟件,詢問其他計算機(如緩存,數(shù)據(jù)庫服務器,電子商務服務器,...),完全或部分按需生成文檔。

服務器不一定是一臺機器,但可以在同一臺機器上托管多臺服務器。使用HTTP / 1.1和Host頭部,他們甚至可以共享相同的IP地址。

代理

在Web瀏覽器和服務器之間,許多計算機和機器都會轉發(fā)HTTP消息。由于Web堆棧的分層結構,其中大多數(shù)可以在傳輸層,網(wǎng)絡層或物理層進行操作,在HTTP層變得透明,并可能對性能產(chǎn)生重大影響。那些在應用層操作的通常稱為代理。這些可以是透明的,也可以不是(改變請求不通過它們),并且可以執(zhí)行許多功能:

  • caching (the cache can be public or private, like the browser cache)

  • filtering (like an antivirus scan, parental controls, …)

  • load balancing (to allow multiple servers to serve the different requests)

  • authentication (to control access to different resources)

  • logging (allowing the storage of historical information)

HTTP的基本方面

HTTP很簡單

即使在HTTP / 2中通過將HTTP消息封裝到幀中而引入更復雜的情況下,HTTP通常被設計為簡單且可讀的。HTTP消息可以被人閱讀和理解,提供更簡單的開發(fā)人員測試,并降低新手的復雜度。

HTTP是可擴展的

在HTTP/1.0中引入HTTP頭使得該協(xié)議易于擴展和實驗。新功能甚至可以通過客戶端和服務器之間關于新頭的語義的簡單協(xié)議來引入。

HTTP是無狀態(tài)的,但不是無時間的

HTTP是無狀態(tài)的:兩個請求之間沒有連續(xù)的連接。這對于嘗試連貫地與某些頁面進行交互的用戶(例如,使用電子商務購物籃)來說可能會產(chǎn)生問題。但HTTP本身的核心是無狀態(tài)的,HTTP cookie允許使用有狀態(tài)會話。使用頭可擴展性,HTTP Cookies被添加到工作流中,允許在每個HTTP請求上創(chuàng)建會話以共享相同的上下文或相同的狀態(tài)。

HTTP和連接

連接在傳輸層進行控制,因此基本上超出了HTTP的范圍。雖然HTTP不需要基礎傳輸協(xié)議是基于連接的; 只要求它是可靠的,或不會丟失消息(所以至少出現(xiàn)錯誤)。在互聯(lián)網(wǎng)上最常見的兩種傳輸協(xié)議中,TCP是可靠的,而UDP不是。HTTP隨后依賴基于連接的TCP標準,即使不總是需要連接。

HTTP/1.0為每個請求/響應交換打開了一個TCP連接,引入了兩個主要缺陷:打開連接需要幾次往返消息,因此速度較慢,但在發(fā)送多條消息時變得更高效,并定期發(fā)送:連接比的更有效率。

為了減輕這些缺陷,HTTP / 1.1引入了流水線(難以實現(xiàn))和持久連接:底層TCP連接可以使用Connection頭部分進行部分控制。通過在單個連接上復用消息,HTTP / 2更進一步,幫助保持連接溫暖,并且更高效。

正在進行實驗來設計更適合HTTP的更好的傳輸協(xié)議。例如,Google正在試驗基于UDP的QUIC,以提供更可靠和更高效的傳輸協(xié)議。

什么可以被HTTP控制

隨著時間的推移,HTTP的這種可擴展性使得Web可以實現(xiàn)更多的控制和功能。緩存或身份驗證方法是在HTTP歷史記錄中早期處理的函數(shù) 相比之下,放松原產(chǎn)地限制的能力僅在2010年才增加。

這里列出了可以用HTTP控制的常用功能。

  • 緩存

如何緩存文檔可以通過HTTP進行控制。服務器可以指示代理和客戶端,緩存的內容和時間??蛻舳丝梢灾甘局虚g緩存代理忽略存儲的文檔。

  • 放寬原點約束

為防止窺探和其他隱私入侵,Web瀏覽器強制嚴格分離網(wǎng)站。只有來自同一來源的頁面才能訪問網(wǎng)頁的所有信息。雖然這樣的約束對服務器來說是一種負擔,但HTTP頭可以放寬服務器端的嚴格分離,從而使文檔成為來自不同域的信息的拼湊體(甚至可能存在與安全相關的原因)。

  • 身份驗證

某些頁面可能受到保護,因此只有特定用戶才能訪問它 基本身份驗證可以由HTTP提供,可以使用WWW-Authenticate類似的頭文件,也可以使用HTTP cookie設置特定的會話。

  • 代理和隧道

服務器和/或客戶端通常位于內聯(lián)網(wǎng)上,并向其他人隱藏其真實IP地址。HTTP請求然后通過代理來跨越這個網(wǎng)絡障礙。并非所有的代理都是HTTP代理。例如,SOCKS協(xié)議的運行水平較低。其他的,比如ftp,可以由這些代理來處理。

  • 會話

使用HTTP cookie允許您將請求與服務器的狀態(tài)關聯(lián)。盡管基本HTTP是一種無狀態(tài)協(xié)議,但這會創(chuàng)建會話。這不僅適用于電子商務購物籃,而且適用于任何允許用戶配置輸出的站點.HTTP流程當客戶想要與服務器通信時,無論是最終服務器還是中間代理,它都會執(zhí)行以下步驟:

  • 打開TCP連接:TCP連接將用于發(fā)送一個或多個請求,并接收答案??蛻舳丝赡軙蜷_一個新連接,重新使用現(xiàn)有連接,或打開多個到服務器的TCP連接。

  • 發(fā)送HTTP消息:HTTP消息(在HTTP / 2之前)是人類可讀的。對于HTTP / 2,這些簡單的消息被封裝在框架中,使得它們不可能直接讀取,但原理保持不變。GET / HTTP / 1.1主機:developer.mozilla.org Accept-Language:fr

  1. 閱讀服務器發(fā)送的響應:HTTP / 1.1 200 OK Date:Sat,09 Oct 2010 14:28:02 GMT Server:Apache Last-Modified:Tue,01 Dec 2009 20:18:22 GMT ETag:“51142bc1-7449 -479b075b2891b“Accept-Ranges:bytes Content-Length:29769 Content-Type:text / html <!DOCTYPE html ...(這里是29769字節(jié)的請求的網(wǎng)頁)

  1. 關閉或重新使用連接以獲取更多請求。

如果HTTP流水線被激活,則可以發(fā)送多個請求而無需等待第一個響應被完全接收。HTTP流水線已被證明難以在現(xiàn)有網(wǎng)絡中實現(xiàn),在現(xiàn)有網(wǎng)絡中,舊版軟件與現(xiàn)代版本共存。HTTP流水線已經(jīng)在HTTP / 2中被一個幀中更強大的多路復用請求所取代。

HTTP消息

HTTP / 1.1和更早版本的HTTP消息是人類可讀的。在HTTP / 2中,這些消息被嵌入到一個新的二進制結構,一個框架中,允許優(yōu)化壓縮報頭和復用。即使在此版本的HTTP中僅發(fā)送了部分原始HTTP消息,每條消息的語義也不會改變,并且客戶端重新構建(虛擬)原始的HTTP / 1.1請求。因此,理解HTTP / 1.1格式的HTTP / 2消息很有用。

有兩種類型的HTTP消息,請求和響應,每種都有其自己的格式。

要求

一個HTTP請求示例:

請求由以下元素組成:

  • 一種HTTP方法,通常是一個動詞GET,POST或者一個名詞,OPTIONS或者HEAD定義客戶想要執(zhí)行的操作。通常,客戶希望獲取資源(使用GET)或發(fā)布HTML表單(使用POST)的值,但在其他情況下可能需要更多的操作。

  • 要獲取的資源的路徑; 例如沒有協(xié)議(http://),域(在這里developer.mozilla.org)或TCP 端口(在這里),從上下文中顯而易見的元素中去除資源的URL 80。

  • HTTP協(xié)議的版本。

  • 傳遞服務器附加信息的可選標題。

  • 或者是一個正文,對于一些POST類似于響應中的方法,這些方法包含發(fā)送的資源。

回應

示例回應:

回應包括以下內容:

  • 他們遵循的HTTP協(xié)議版本。

  • 狀態(tài)碼,指示請求是否成功,以及為什么。

  • 狀態(tài)消息,狀態(tài)碼的非權威性簡短描述。

  • HTTP標頭,就像那些請求一樣。

  • 可選地,包含獲取資源的主體。

結論

HTTP是一個易于使用的可擴展協(xié)議??蛻魴C - 服務器結構與簡單添加標頭的能力相結合,可以使HTTP隨著Web的擴展功能一起提升。

雖然HTTP / 2增加了一些復雜性,但通過將HTTP消息嵌入到幀中以提高性能,自HTTP / 1.0以來,消息的基本結構保持不變。會話流程很簡單,可以通過簡單的HTTP消息監(jiān)視器進行調查和調試。

在MDN上編輯此頁面

Previous article: Next article: