亚洲国产日韩欧美一区二区三区,精品亚洲国产成人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 是萬維網(wǎng)的底層協(xié)議。由 Tim Berners-Lee 在1989  -  1991年發(fā)明的,HTTP 已經(jīng)看到了許多變化,保持了大部分簡單性并進(jìn)一步塑造了其靈活性。HTTP 已經(jīng)從早期的協(xié)議演變到在半可信的實(shí)驗(yàn)室環(huán)境中交換文件,到現(xiàn)在的互聯(lián)網(wǎng)迷宮,現(xiàn)在它們攜帶圖像,高分辨率和3D視頻。

萬維網(wǎng)的發(fā)明

1989年,當(dāng)他在歐洲核子研究中心工作時(shí),蒂姆伯納斯李寫了一個(gè)建議,建立一個(gè)通過互聯(lián)網(wǎng)的超文本系統(tǒng)。最初稱它為Mesh,后來在1990年實(shí)施時(shí)重新命名為萬維網(wǎng)。它建立在現(xiàn)有的TCP和IP協(xié)議上,由4個(gè)構(gòu)建塊組成:

  • 表示超文本文件的文本格式,即超文本標(biāo)記語言(HTML)。

  • 一個(gè)簡單的協(xié)議來交換這些文件,HypertText傳輸協(xié)議(HTTP)。

  • 一個(gè)客戶端顯示(和意外編輯)這些文件,第一個(gè)Web瀏覽器稱為WorldWideWeb。

  • 提供訪問文檔的服務(wù)器,httpd的早期版本。

這四個(gè)構(gòu)件塊在1990年底完成,第一批服務(wù)器已在1991年初在歐洲核子研究中心外運(yùn)行。1991年8月6日,Tim Berners-Lee 在公共超文本新聞組的帖子現(xiàn)在被認(rèn)為是正式開始作為一個(gè)公共項(xiàng)目的萬維網(wǎng)。

這些早期階段使用的HTTP協(xié)議非常簡單,后來被稱為HTTP/0.9,有時(shí)也被稱為單線協(xié)議。

HTTP/0.9 – The one-line protocol

HTTP的初始版本沒有版本號; 它后來被稱為0.9來區(qū)分它和更高版本。HTTP / 0.9非常簡單:請求由一行代碼組成,并從唯一可能的方法開始,GET然后是資源路徑(不是URL,因?yàn)檫B接到服務(wù)器后不需要協(xié)議,服務(wù)器和端口)。

GET /mypage.html

答案也非常簡單:它只包含文件本身。

<HTML>A very simple HTML page</HTML>

與隨后的演變不同,沒有HTTP標(biāo)頭,這意味著只能傳輸HTML文件,而不能傳輸其他類型的文件。沒有狀態(tài)或錯(cuò)誤代碼:在發(fā)生問題的情況下,發(fā)送特定的HTML文件并將其中包含的問題描述供人類使用。

HTTP/1.0  - 構(gòu)建可擴(kuò)展性

HTTP/0.9非常有限,瀏覽器和服務(wù)器很快將其擴(kuò)展到更多功能:

  • 版本信息現(xiàn)在在每個(gè)請求中發(fā)送(HTTP/1.0附加到GET行中)

  • 狀態(tài)碼行也在響應(yīng)開始時(shí)發(fā)送,允許瀏覽器自己了解請求的成功或失敗并調(diào)整其行為(如以特定方式更新或使用本地緩存)

  • 已經(jīng)引入了HTTP標(biāo)頭的概念,包括請求和響應(yīng),允許傳輸元數(shù)據(jù)并使協(xié)議非常靈活和可擴(kuò)展。

  • 在新的HTTP標(biāo)題的幫助下,增加了傳輸其他文檔而不是純HTML文件的功能(感謝Content-Type標(biāo)題)。

一個(gè)典型的要求是這樣的:

GET /mypage.html HTTP/1.0User-Agent: NCSA_Mosaic/2.0 (Windows 3.1)200 OK
Date: Tue, 15 Nov 1994 08:12:31 GMT
Server: CERN/3.0 libwww/2.17Content-Type: text/html<HTML> A page with an image  <IMG SRC="/myimage.gif"></HTML>

接下來是第二個(gè)連接并請求獲取圖像:

GET /myimage.gif HTTP/1.0User-Agent: NCSA_Mosaic/2.0 (Windows 3.1)200 OK
Date: Tue, 15 Nov 1994 08:12:32 GMT
Server: CERN/3.0 libwww/2.17Content-Type: text/gif(image content)

這些新奇事物并沒有作為協(xié)同努力被引入,而是作為1991  -  1995年期間的一種嘗試和看見的方法:服務(wù)器和瀏覽器增加了一個(gè)功能,并且看到它是否得到了牽引。許多互操作性問題很常見。在1996年11月,為了解決這些煩惱,RFC 1945發(fā)布了描述通用實(shí)踐的信息文件。這是HTTP/1.0的定義,值得注意的是,從狹義上講,它不是官方的標(biāo)準(zhǔn)。

HTTP/1.1  - 標(biāo)準(zhǔn)化協(xié)議

與HTTP/1.0的各種實(shí)現(xiàn)的有些混亂的使用并行,并且從1995年開始,在明年發(fā)布HTTP/1.0文檔之前,正在進(jìn)行適當(dāng)?shù)臉?biāo)準(zhǔn)化。HTTP/1.1的第一個(gè)標(biāo)準(zhǔn)化版本于1997年初發(fā)布,僅在HTTP/1.0之后幾個(gè)月發(fā)布。

HTTP/1.1澄清了含糊之處并引入了許多改進(jìn):

  • 連接可以重復(fù)使用,節(jié)省重新打開多次的時(shí)間,以顯示嵌入到檢索到的單個(gè)原始文檔中的資源。

  • 流水線已添加,允許在第一個(gè)請求的答案完全傳輸之前發(fā)送第二個(gè)請求,從而降低通信延遲。

  • 分塊響應(yīng)現(xiàn)在也支持。

  • 額外的緩存控制機(jī)制已經(jīng)被引入。

  • 內(nèi)容協(xié)商(包括語言,編碼或類型)已經(jīng)引入,并允許客戶和服務(wù)器就最適合交換的內(nèi)容達(dá)成一致。

  • 多虧了Host標(biāo)題,現(xiàn)在可以在同一個(gè)IP地址上托管不同的域,從而允許服務(wù)器搭配。

一個(gè)典型的請求流,通過一個(gè)單一的連接現(xiàn)在看起來像這樣:

GET /en-US/docs/Glossary/Simple_header HTTP/1.1Host: developer.mozilla.org
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:50.0) Gecko/20100101 Firefox/50.0Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Referer: https://developer.mozilla.org/en-US/docs/Glossary/Simple_header

200 OK
Connection: Keep-Alive
Content-Encoding: gzip
Content-Type: text/html; charset=utf-8
Date: Wed, 20 Jul 2016 10:55:30 GMT
Etag: "547fa7e369ef56031dd3bff2ace9fc0832eb251a"
Keep-Alive: timeout=5, max=1000
Last-Modified: Tue, 19 Jul 2016 00:59:33 GMT
Server: Apache
Transfer-Encoding: chunked
Vary: Cookie, Accept-Encoding

(content)


GET /static/img/header-background.png HTTP/1.1
Host: developer.cdn.mozilla.net
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:50.0) Gecko/20100101 Firefox/50.0
Accept: */*Accept-Language: en-US,en;q=0.5Accept-Encoding: gzip, deflate, br
Referer: https://developer.mozilla.org/en-US/docs/Glossary/Simple_header200 OK
Age: 9578461Cache-Control: public, max-age=315360000Connection: keep-alive
Content-Length: 3077Content-Type: image/png
Date: Thu, 31 Mar 2016 13:34:46 GMT
Last-Modified: Wed, 21 Oct 2015 18:27:50 GMT
Server: Apache(image content of 3077 bytes)

HTTP/1.1于1997年1月首次發(fā)布為RFC 2068。

超過15年的延期

由于其可擴(kuò)展性 - 很容易創(chuàng)建新的頭文件或方法 - 即使HTTP/1.1協(xié)議經(jīng)過兩次修訂(1999年6月發(fā)布的RFC 2616和2014年6月發(fā)布的RFC 7230 - RFC 7235系列)HTTP / 2的發(fā)布,這個(gè)協(xié)議在超過15年的時(shí)間里非常穩(wěn)定。

使用HTTP進(jìn)行安全傳輸

發(fā)生在HTTP上的最大變化早在1994年底完成。Netscape Communication不是通過基本的TCP / IP堆棧發(fā)送HTTP,而是在其上創(chuàng)建了一個(gè)額外的加密傳輸層:SSL。SSL 1.0從未在公司以外發(fā)布過,但SSL 2.0及其后繼者SSL 3.0和SSL 3.1允許通過加密和保證服務(wù)器和客戶端之間交換消息的真實(shí)性來創(chuàng)建電子商務(wù)網(wǎng)站。SSL被放在標(biāo)準(zhǔn)軌道上,最終成為TLS,1.0,1.1和1.2版成功出現(xiàn)在關(guān)閉漏洞的地方。TLS 1.3目前正在制作中。

同時(shí),對加密傳輸層的需求也在增加:Web留下了大多數(shù)學(xué)術(shù)網(wǎng)絡(luò)的相對可信度,到了廣告客戶,隨機(jī)個(gè)人或罪犯競相獲取關(guān)于人們的私人信息的叢林,試圖模仿他們甚至可以取代由改變的數(shù)據(jù)傳輸?shù)臄?shù)據(jù)。隨著通過HTTP構(gòu)建的應(yīng)用程序變得越來越強(qiáng)大,訪問越來越多的私人信息(如地址簿,電子郵件或用戶的地理位置),即使在電子商務(wù)使用之外,也需要使TLS變得無處不在案件。

將HTTP用于復(fù)雜的應(yīng)用程序

Tim Berners-Lee對于Web的最初設(shè)想不是只讀媒體。他設(shè)想了一個(gè)Web,人們可以在其中遠(yuǎn)程添加和移動文檔,這是一種分布式文件系統(tǒng)。大約在1996年,HTTP已經(jīng)擴(kuò)展到允許創(chuàng)作,并且創(chuàng)建了一個(gè)名為WebDAV的標(biāo)準(zhǔn)。它已被進(jìn)一步擴(kuò)展用于特定應(yīng)用程序,如CardDAV處理地址簿條目和CalDAV以處理日歷。但所有這些* DAV擴(kuò)展都有一個(gè)缺陷:它們必須由要使用的服務(wù)器來實(shí)現(xiàn),這非常復(fù)雜。他們在Web領(lǐng)域的使用保持保密。

在2000年,設(shè)計(jì)了一種使用HTTP的新模式:表示狀態(tài)轉(zhuǎn)移(或REST)。API引發(fā)的操作不再通過新的HTTP方法傳達(dá),而僅通過使用基本的HTTP/1.1方法訪問特定的URI。這允許任何Web應(yīng)用程序提供API以允許檢索和修改其數(shù)據(jù),而不必更新瀏覽器或服務(wù)器:所有需要的內(nèi)容都通過標(biāo)準(zhǔn)的HTTP/1.1嵌入到網(wǎng)站提供的文件中。REST模型的缺點(diǎn)在于每個(gè)網(wǎng)站都定義了自己的非標(biāo)準(zhǔn)RESTful API并對其進(jìn)行了全面控制; 與客戶端和服務(wù)器可互操作的* DAV擴(kuò)展不同。REST風(fēng)格的API在2010年變得非常普遍。

自2005年以來,Web頁面可用的一組API大大增加,其中一些API為特定目的而創(chuàng)建了HTTP協(xié)議的擴(kuò)展(主要是新的特定HTTP標(biāo)頭):

  • 服務(wù)器發(fā)送的事件,服務(wù)器可以將偶然消息推送到瀏覽器。

  • WebSocket,一種可以通過升級現(xiàn)有HTTP連接來建立的新協(xié)議。

放寬Web的安全模型

HTTP獨(dú)立于Web的安全模型,即同源策略。實(shí)際上,當(dāng)前的Web安全模型是在創(chuàng)建HTTP之后開發(fā)的!多年來,通過允許在某些限制條件下取消對這項(xiàng)政策的某些限制,能夠變得更加寬容,證明是有用的。服務(wù)器使用一堆新的HTTP標(biāo)頭將這些限制解除多少以及何時(shí)傳送給客戶端。這些定義在跨源資源共享(CORS)或內(nèi)容安全策略(CSP)等規(guī)范中。

除了這些大的擴(kuò)展之外,還添加了許多其他的頭文件,有時(shí)僅用于實(shí)驗(yàn)。值得注意的標(biāo)題是Do Not Track(DNT)標(biāo)題來控制隱私X-Frame-Options,或者Upgrade-Insecure-Requests更多的存在。

HTTP/2  - 更高性能的協(xié)議

多年來,網(wǎng)頁變得越來越復(fù)雜,甚至成為應(yīng)用程序本身。顯示的可視媒體數(shù)量,增加交互性的腳本的體積和大小也有所增加:通過顯著更多的HTTP請求傳輸更多的數(shù)據(jù)。HTTP/1.1連接需要以正確的順序發(fā)送請求。理論上,可以使用幾個(gè)并行連接(通常在5到8之間),帶來相當(dāng)大的開銷和復(fù)雜性。例如,HTTP流水線已成為Web開發(fā)中的資源負(fù)擔(dān)。

在2010年上半年,Google通過實(shí)施SPDY實(shí)驗(yàn)協(xié)議,演示了在客戶端和服務(wù)器之間交換數(shù)據(jù)的另一種方式。這引起了在瀏覽器和服務(wù)器上工作的開發(fā)人員的興趣。SPDY定義了響應(yīng)性的增加,并解決了傳輸數(shù)據(jù)重復(fù)的問題,成為HTTP/2協(xié)議的基礎(chǔ)。

HTTP/2協(xié)議與HTTP/1.1版本有幾個(gè)主要區(qū)別:

  • 這是一個(gè)二進(jìn)制協(xié)議,而不是文本。盡管有這個(gè)障礙,但不能再手動讀取和創(chuàng)建,現(xiàn)在可以實(shí)施改進(jìn)的優(yōu)化技術(shù)。

  • 它是一個(gè)多路復(fù)用協(xié)議。并行請求可以通過同一個(gè)連接處理,消除HTTP/1.x協(xié)議的順序和阻塞約束。

  • 它壓縮標(biāo)題。由于這些請求在一組請求中經(jīng)常相似,這消除了傳輸數(shù)據(jù)的重復(fù)和開銷。

  • 它允許服務(wù)器在需要之前通過稱為服務(wù)器推送的機(jī)制將數(shù)據(jù)填充到客戶端緩存中。

2015年5月正式標(biāo)準(zhǔn)化后,HTTP/2取得了很大的成功。到2016年7月,所有網(wǎng)站有8.7%已經(jīng)使用它,占所有請求的68%以上。高流量的網(wǎng)站顯示了最快的采用率,大大節(jié)省了數(shù)據(jù)傳輸開銷和后續(xù)預(yù)算。

這種快速采用率很可能是因?yàn)镠TTP/2不需要適應(yīng)網(wǎng)站和應(yīng)用程序:使用HTTP/1.1或HTTP/2對他們來說是透明的。使用最新的服務(wù)器與最近的瀏覽器進(jìn)行通信足以支持其使用:只需要有限的一組組即可觸發(fā)采用,并且隨著舊版瀏覽器和服務(wù)器版本的更新,使用量自然會增加,而無需其他Web開發(fā)者努力。

Post-HTTP/2 evolution

HTTP在HTTP / 2發(fā)布后并沒有停止發(fā)展。與之前的HTTP / 1.x一樣,HTTP的可擴(kuò)展性仍然用于添加新功能。值得注意的是,我們可以引用2016年出現(xiàn)的HTTP協(xié)議的新擴(kuò)展:

  • 支持Alt-Svc允許標(biāo)識和給定資源的位置分離,允許更智能的CDN緩存機(jī)制。

  • 引入Client-Hints允許瀏覽器或客戶端主動將有關(guān)其需求或硬件約束的信息傳達(dá)給服務(wù)器。

  • Cookie頭文件中引入與安全有關(guān)的前綴,現(xiàn)在有助于保證cookie的安全性沒有被改變。

HTTP的這種演變證明了它的可擴(kuò)展性和簡單性,解放了許多應(yīng)用程序的創(chuàng)建并強(qiáng)制采用該協(xié)議?,F(xiàn)在使用HTTP的環(huán)境與20世紀(jì)90年代初期的情況完全不同。HTTP的原創(chuàng)設(shè)計(jì)被證明是一個(gè)杰作,它允許Web在四分之一世紀(jì)內(nèi)發(fā)展,而不需要嘩變。通過修復(fù)漏洞,并保持使HTTP獲得如此成功的靈活性和可擴(kuò)展性,采用HTTP / 2為協(xié)議提供了光明的未來。

Previous article: Next article: