1. 程式人生 > >51 張圖助你徹底掌握 HTTP!

51 張圖助你徹底掌握 HTTP!

前言

如果說 TCP/IP 協議是網際網路通訊的根基,那麼 HTTP 就是其中當之無愧的王者,小到日常生活中的遊戲,新聞,大到雙十一秒殺等都能看到它的身影,據 NetCraft 統計,目前全球至少有 16 億個網站、2 億多個獨立域名,而這個龐大網路世界的底層運轉機制就是 HTTP,可以毫不誇張的說,無 HTTP 不通訊!

畫外音: TCP/IP 協議群如下, IP 不是 IP 地址,是 Internet Protocol 的簡稱

HTTP 應用如此廣泛,我們確實必要好好學習下它,不僅有助於我們理解和解釋工作中的強制重新整理,防盜鏈等現象和原理,還讓我們在設計開源中介軟體時會有所啟發,比如在設計 MQ, Dubbo 這些元件時,第一要務就是要設計協議,在其中你或多或少能看到 HTTP 協議的影子,學習了 HTTP 能讓你在設計中介軟體等元件協議時,提供很好的思路

本文將會全面剖析 HTTP 的設計理念,助你徹底掌握 HTTP,相信看完以下問題你會手到擒來!

  1. 什麼是 HTTP,它有什麼特點,為什麼說 HTTP 是萬能的
  2. 為什麼說反爬是個偽命題
  3. 簡要介紹一下 HTTP 0.9, 1.1, 2.0, 3.0 的特點
  4. 曾經在我司有一位同事在大群裡拋了一個問題:在瀏覽器的位址列輸入圖片 url,想預覽一下圖片,結果卻變成了下載圖片,你能替他解釋一下其中的原因嗎
  5. DNS 協議瞭解多少,什麼是 DNS 負載均衡
  6. HTTP 1.1 唯一一個要求請求頭必傳的欄位是哪個,它有什麼作用
  7. no-cache 真的是不快取的意思?你對 HTTP 的快取瞭解多少
  8. 為什麼重新整理了瀏覽器器卻抓不到請求,而強制重新整理卻可以抓到,強制重新整理到底做了什麼事
  9. 301 和 302 的區別是啥
  10. 各種協議與 HTTP 的關係
  11. 老生常談很多人的誤解:GET 和 POST 的區別是啥

本文將會從以下幾點來展開闡述 HTTP

  • 什麼是 HTTP
  • 與 HTTP 相關的各種協議
    • 1. URI 和 URL
    • 2. TCP/IP 協議
    • 2. DNS 協議
  • HTTP 報文格式
    • 請求報文格式
    • 響應報文格式
    • 請求和響應頭
    • 常用頭欄位
  • HTTP 2.0 概覽
    • 1、頭部壓縮
    • 2、二進位制格式
    • 3. 流
    • HTTP 2 的隊頭阻塞
  • 總結:HTTP 的特點
  • 回答開篇問題

什麼是 HTTP

HTTP 全稱 HyperText Transfer Protocol「超文字傳輸協議」,拆成三個部分來看,即「超文字」,「傳輸」,「協議」

超文字:即「超越了普通文字的文字」,即音視訊,圖片,檔案的混合體,大家常見的網頁很多就內嵌了 img, video 這些標籤解析展現而成的圖片,視訊等,除了這些超文字內容外,最關鍵的是超文字中含有超連結,超連結意味著網頁等檔案內容的超文字上可以點選連結到其他頁面上,網際網路就是通過這樣的超連結構成的。

傳輸: 傳輸意味著至少有兩個參與者,比如 A,B,這意味著 HTTP 協議是個雙向協議,一般是將「超文字」按照約定的協議以二進位制資料包的形式從 A 傳到 B 或 B 傳到 A, A <===> B,我們把發起請求的叫請求方,接到請求後返回資料的那一方稱為應答方,但需要注意的是傳輸也不限於兩個參與者,允許中間有中轉或者接力,只要參與者間遵循約定的協議即可傳輸。 如圖示:傳輸可以有多個參與者,只要遵循相應的協議即可

協議:HTTP 是一個協議,啥是協議?在日常生活中協議並不少見,比如我們租房時簽訂的租房協議,入職後和企業簽訂的勞動合同協議,「協」意味著至少有兩人蔘與,「議」意味著雙方要就某項條款達成一致,比如租房協議規定月付 xx 元,勞動合同協議規定月工資 xx 元,協議即對通訊雙方的約束,雙方按照約定傳輸資料才能進行明白對方的意思,否則便是雞同鴨講。

經過以上解釋,我們可以給 HTTP 下一個比較準確的定義了:

HTTP 是一個在計算機世界裡專門在兩點之間傳輸文字、圖片、音訊、視訊等超文字資料的約定和規範。

與 HTTP 相關的各種協議

HTTP 雖然在當今網際網路通訊中佔據統計地位,但要讓它生效還必須依賴其他協議或規範的支援

1. URI 和 URL

首先既然我們要在兩點之間傳輸超文字,那這個超文字該怎麼表示?超文字即資源,網際網路上資源這麼多,如何唯一標記網際網路上的資源。

使用 URI(Uniform Resource Identifier) 即統一資源識別符號就可以唯一定位網際網路上的資源。URI 大家比較少聽過,大家更熟悉的可能是 URL(Uniform Resource Locator),即統一資源定位符,URL 其實是 URI 的一種子集,區別就是URI 定義資源,而 URL 不單定義這個資源,還定義瞭如何找到這個資源。

URL 主要由四個部分組成:協議、主機、埠、路徑

協議:即通訊雙方指定的傳輸協議,應用最廣的當然是本文要介紹的 http 協議,除此之外還有 ftp, mailto,file 等協議。

主機名:存放資源的伺服器主機名或 IP 地址,當前有時候伺服器由於安全原因還需要對使用者進行認證,需要提供使用者名稱和密碼,此時需要在 hostname前加 username:password。

埠:整數,可選,省略時使用方案的預設埠,各種傳輸協議都有預設的埠,如 HTTP 預設用的 80 埠,HTTPS 用的 443 埠,傳輸層協議正是利用這些埠號識別本機中正在進行通訊的應用程式,並準確地將資料傳輸。

路徑:即資源在主機上的存放路徑,一般表示主機的目錄或檔案地址

parameter:用於指定特殊引數的可選項。

query:查詢字串,可選,用於給動態網頁或介面傳遞引數,可有多個引數,用“&”符號隔開,每個引數的名和值用“=”符號隔開。

fragment:瀏覽器專用,用於指定網路資源中的片斷,指定後開啟網頁可直接定位到 fragment 對應的位置。

例子如下

2. TCP/IP 協議

在上述 URL 地址中,如果你指定了「www.example.com 」 這樣的主機名,最終會被 DNS 解析成 IP 地址然後才開始通訊,為啥主機名最終要被解析成 IP 地址才能通訊呢,因為 HTTP 協議使用的是 TCP/IP 協議棧,協議棧就是這樣規定的,一起來看看 TCP/IP 協議棧各層的功能。

TCP/IP協議棧

TCP/IP 協議棧總共有四層

  1. link layer: 連結層,負責在乙太網,WIFI 這樣的底層網路上傳送原始資料包,工作在網絡卡這一層,使用 MAC 地址來標記網路上的裝置,所以也叫 MAC 層
  2. Internet layer: 網路層,IP 協議即處於這一層,提供路由和定址的功能,使兩終端系統能夠互連且決定最佳路徑,並具有一定的擁塞控制和流量控制的能力。相當於傳送郵件時需要地址一般重要
  3. transport layer: 傳輸層,該層的協議為應用程序提供端到端的通訊服務,這層主要有 TCP,UDP 兩個協議,TCP 提供面向連線的資料流支援、可靠性、流量控制、多路複用等服務,UDP不提供複雜的控制機制,利用 IP 提供面向無連線的簡單訊息傳輸
  4. application layer: 即應用層,前面三層已經為網路通訊打下了堅實的基礎,這層可發揮的空間就大很多了,應用層協議可以想象為不同的服務,每個應用層協議都是為了解決某一類應用問題而生的,每一個服務需要用不同的協議,規定應用程序在通訊時所遵循的協議。

我們可以把前面三層認為是高速公路的基礎設施,至於要傳什麼貨物,高速公路是否要關閉等則由應用層決定。

利用 TCP/IP 協議族進行網路通訊時,會通過分層順序與對方進行通訊。每個分層中,都會對所傳送的資料附加一個首部,在這個首部中包含了該層必要的資訊,如傳送的目標地址以及協議相關資訊。

接收方收到資料後,同樣的,每一層也會解析其首部欄位,直到應用層收到相應的資料。

圖片來自文末參考連結

通過這樣分層的方式,每個層各司其職,只要管好自己的工作即可,可擴充套件性很好,比如對於 HTTP 來說,它底層可以用 TCP,也可以用 UDP 來傳輸,哪天如果再出現了更牛逼的協議,也可以替換之,不影響上下層,這就是計算機中比較有名的分層理論:沒有什麼是分層解決不了的,如果有那就再分一層。

IP 包的首部中定義了32 位的源 IP 地址和目的 IP 地址,如下圖所示址

所以應用層在請求傳輸資料時必須事先要知道對方的 IP 地址,然後才能開始傳輸。

2. DNS 協議

由上一節可知請求時需要事先知道對方的 IP 地址,但 IP 地址是由「161.117.232.65」這樣的數字組成的,正常人根本記不住,想想看,如果我要上個百度,還要先知道它的 IP 地址,那豈不是要瘋掉,那怎麼辦,聯絡生活場景,想想看,如果我們要打某人電話,記不住他的電話號碼,是不是要先到電話本找某個人的名字,然後再打,電話本起的作用就是把姓名翻譯成電話號碼。

同樣的,正常人只會記住 baidu.com 這樣的網址,那就需要有類似電話本這樣的翻譯器把網址轉成 IP 地址,DNS(域名伺服器)就是幹這個事的

上面只是 DNS 的簡化版本,實際上 DNS 解析無法一步到位,比較複雜,要理解 DNS 的工作機制,首先我們要看懂域名的層級結構,類似 www.baidu.com 這樣的網址也叫域名,是一個有層次的結構, 最右邊的被稱為頂級域名,然後是二級域名,層級關係向左降低,最左邊的是主機名,通常用來表示主機的用途,比如 「www」 表示提供全球資訊網服務

當然這也不是絕對的,起名的關鍵只是方便我們記憶而已。

域名有層次之分,DNS 也是有層次之分,DNS 核心系統是一個三層的樹狀,分散式結構,基本對應域名結構。

  1. 根域名伺服器(Root DNS Server): 返回「com」,「cn」,「net」等頂級域名伺服器的 IP 地址,
  2. 頂級域名伺服器(Top-level DNS Server):管理各自域名下的權威域名伺服器,比如 com 頂級域名伺服器可以返回 apple.com 域名伺服器的 IP 地址;
  3. 權威域名伺服器(Authoritative DNS Server):管理自己域名下主機的 IP 地址,比如 apple.com 權威域名伺服器可以返回 www.apple.com 的 IP 地址。
DNS 核心系統層級結構

根域名伺服器是關鍵,必須是眾所周知的,找到了它,下面的各級域名伺服器才能找到,否則域名解析就無從談起了。既然知道了 DNS 的層次之分,那麼不難猜出請求 www.apple.com 的 DNS 解析如下

  1. 首先訪問根域名伺服器,獲取「com」頂級域名伺服器的地址
  2. 請求「com」頂級域名伺服器,返回「apple.com」域名伺服器的地址
  3. 然後返回「apple.com」域名伺服器,返回 www.apple.com 的地址

以上三層解析我們稱為 DNS 核心解析系統,那麼大家想想,全世界的 PC,app 等裝置多如牛毛,如果每發一次請求都要按上面的 DNS 解析來獲取 IP,那估計 DNS 解析系統就要炸了,如何緩解這種壓力呢,答案是用快取,事實上很多大公司,或網路運營商都會自建自己的 DNS 伺服器,作為使用者查詢的代理,代替使用者請求核心 DNS 系統,這樣如果查到的話可以快取查詢記錄,再次收到請求的號如果有快取結果或者快取未過期,則直接返回原來的快取結果,大家可能聽過 Google 的 8.8.8.8 DNS 解析伺服器,這種就是 Google 自建的,我們一般稱這種自建的為「非權威域名伺服器」。

配置 DNS Server

除了非權威域名伺服器,還有瀏覽器快取,作業系統快取(大家熟知的 /etc/hosts 就是作業系統 DSN 快取的一種)

這樣的話如果請求 www.example.com,dns 的完整解析流程如下:

1、 瀏覽器中輸入 www.example.com 後,會先檢視 瀏覽器的 DNS 快取是否過期,未過期直接取快取的,已過期會繼續請求作業系統的快取(/etc/hosts 檔案等),還未找到,進入步驟 2

2、 請求本地地址配置的 DNS resolver(非權威域名伺服器),一般由使用者的 Internet 服務提供商 (ISP) 進行管理,例如有線 Internet 服務提供商、DSL 寬頻提供商或公司網,MAC 的同學可以開啟網路配置中的 DNS Servers 來看下預設 ISP 提供的域名伺服器(如果想用其他的非權威域名伺服器,填入即可,這樣就會覆蓋 ISP 提供的預設地址)

3、 DNS resolver 將 www.example.com 的請求轉發到 DNS 根名稱伺服器, 根伺服器返回「.com」頂級域名伺服器地址

4、 DNS resolver 再次轉發 www.example.com 的請求,這次轉發到步驟三獲取到的 .com 域的一個 TLD 名稱伺服器。.com 域的名稱伺服器使用與 example.com 域相關的四個 Amazon Route 53 名稱伺服器的名稱來響應該請求。

5、Amazon Route 53 名稱伺服器在 example.com 託管區域中查詢 www.example.com 記錄,獲得相關值,例如,Web 伺服器的 IP 地址 (192.0.2.44),並將 IP 地址返回至 DNS 解析程式。

6、DNS resolver 最終獲得使用者需要的 IP 地址。解析程式將此值返回至 Web 瀏覽器。DNS 解析程式還會將 example.com 的 IP 地址快取 (儲存) 您指定的時長,以便它能夠在下次有人瀏覽 example.com 時更快地作出響應。

我們可以用 dig 工具來驗證一下上面的請求流程

可以看到請求流程確實與我們的流程圖一致!另外我們注意到 ip 地址返回了四個,這樣的話 client 可以隨機選擇其中一個請求,這就是我們常說的 DNS 負載均衡,可有效快取 server 壓力。

HTTP 報文格式

接下來我們再介紹下 HTTP 報文格式,通訊雙方要能正常通訊,就必須遵循協議才能理解對方的資訊,協議規定了 HTTP 請求和響應報文的格式。

請求和響應報文都由「起始行」,「頭部」,「空行」,「實體」 四個部分組成,只不過起始行稍有不同。

請求報文格式

先來看下請求報文的格式

示例如下:

請求方法比較常見的有以下幾類

1、 GET: 請求 URL 指定的資源,指定的資源經伺服器端解析後返回響應內容,GET 方法具有冪等性,即無論請求多次,都只會返回資源,而不會額外建立或改變資源, GET 請求只傳請求頭,不傳請求體。

2、 HEAD: 語義上與 GET 類似,但 HEAD 的響應只有請求頭,沒有請求體

3、 POST: 主要用來建立,修改,上傳資源,不具有冪等性,一般將要請求的資源附在請求體上傳輸

4、 PUT: 修改資源,基本上不用,因為 POST 也具有修改的語義,所以基本上線上大多用 POST 來代替。

5、 OPTIONS: 列出可對資源實行的方法,這個方法很少見,但在跨域中會用到,也比較重要,後文結合 Cookie 談到安全問題時我們會再提

協議版本指定了客戶端當前支援的 HTTP 版本,HTTP 目前通用的有 1.1, 2.0 三個版本,如果請求方指定了 1.1,應答方收到之後也會使用 HTTP 1.1 協議進行回覆。

響應報文格式

響應行的報文格式如下

示例如下

響應報文主要有如下五類狀態碼:

  • 1××:提示資訊,表示目前是協議處理的中間狀態,還需要後續的操作;
  • 2××:成功,報文已經收到並被正確處理;
  • 3××:重定向,資源位置發生變動,需要客戶端重新發送請求;
  • 4××:客戶端錯誤,請求報文有誤,伺服器無法處理;
  • 5××:伺服器錯誤,伺服器在處理請求時內部發生了錯誤。

常用的狀態碼及其釋義如下(更詳細的可以參考文末參考連結)

狀態碼 狀態碼的原因短語 釋義
100 Continue 這個臨時響應表明,迄今為止的所有內容都是可行的,客戶端應該繼續請求,如果已經完成,則忽略它。
200 OK 請求獲取/建立資源成功
201 Created 該請求已成功,並因此建立了一個新的資源,通過用到 POST 請求中
206 Partial Content 伺服器已經成功處理了部分 GET 請求。類似於 FlashGet 或者迅雷這類的 HTTP 下載工具都是使用此類響應實現斷點續傳或者將一個大文件分解為多個下載段同時下載。該請求必須包含 Range 頭資訊來指示客戶端希望得到的內容範圍,並且可能包含 If-Range 來作為請求條件。
301 Moved Permanently 永久重定向,說明請求的資源已經被移動到了由 Location 頭部指定的url上,是固定的不會再改變
302 Found 臨時重定向,重定向狀態碼錶明請求的資源被暫時的移動到了由Location 頭部指定的 URL 上
400 Bad Request 1、語義有誤,當前請求無法被伺服器理解。除非進行修改,否則客戶端不應該重複提交這個請求。2、請求引數有誤
401 Unauthorized 當前請求需要使用者驗證。該響應必須包含一個適用於被請求資源的 WWW-Authenticate 資訊頭用以詢問使用者資訊。
403 Forbidden 伺服器已經理解請求,但是拒絕執行它,可以認為使用者沒有許可權
404 Not Found 請求失敗,請求所希望得到的資源未被在伺服器上發現
405 Method Not Allowed 請求行中指定的請求方法不能被用於請求相應的資源。該響應必須返回一個Allow 頭資訊用以表示出當前資源能夠接受的請求方法的列表
500 Internal Server Error 伺服器遇到意外的情況並阻止其執行請求。
502 Bad Gateway 此錯誤響應表明伺服器作為閘道器需要得到一個處理這個請求的響應,但是得到一個錯誤的響應。

瞭解這些狀態碼,我們定位排查問題就能成竹在胸,比如看到 5xx,就知道是 server 的邏輯有問題,看到 400 就知道是客戶端的請求引數有問題,另一端就不用傻傻去排查了。

請求和響應頭

請求和響應頭部報文的 header 格式基本都是一樣的,都是 key-value 的形式,key 和 value 都是用 「: 」分隔,此外 HTTP 頭欄位非常靈活,除了使用標準的 Host,Connection 等頭欄位外,也可以任意新增自定義頭,這就給 HTTP 協議帶來了無限的擴充套件可能!

常用頭欄位

HTTP 協議規定了非常多的頭欄位,可以實現各種各樣的功能,但基本上可以分為以下四類

  1. 通用欄位:在請求頭和響應頭裡都可以出現;
  2. 請求欄位:僅能出現在請求頭裡,進一步說明請求資訊或者額外的附加條件;
  3. 響應欄位:僅能出現在響應頭裡,補充說明響應報文的資訊;
  4. 實體欄位:它實際上屬於通用欄位,但專門描述 body 的額外資訊。

對 HTTP 報文的解析和處理其實本質上就是對頭欄位的處理,HTTP 的連線管理,快取控制,內容協商等都是通過頭欄位來處理的,理解了頭欄位,基本上也就理解了 HTTP,所以理解頭欄位非常重要。接下來我們就來看看這些頭部欄位的具體含義

1、通用欄位

首部欄位名 說明
Cache-Control 控制快取的行為
Connection 逐跳首部、連線的管理
Date 建立報文的日期時間
Pragma 報文指令
Trailer 報文末端的首部一覽
Transfer-Encoding 指定報文主體的傳輸編碼方式
Upgrade 升級為其他協議
Via 代理伺服器的相關資訊
Warning 錯誤通知

2、請求首部欄位

相關推薦

51 徹底掌握 HTTP!

前言 如果說 TCP/IP 協議是網際網路通訊的根基,那麼 HTTP 就是其中當之無愧的王者,小到日常生活中的遊戲,新聞,大到雙十一秒殺等都能看到它的身影,據 NetCraft 統計,目前全球至少有 16 億個網站、2 億多個獨立域名,而這個龐大網路世界的底層運轉機制就是 HTTP,可以毫不誇張的說,無 HT

13徹底看懂馬爾科夫鏈、PCA和條件概率!

添加 bubuko 人類 鏈接 作者 搜索 作用 當前 變換 13張動圖助你徹底看懂馬爾科夫鏈、PCA和條件概率! https://mp.weixin.qq.com/s/ll2EX_Vyl6HA4qX07NyJbA [ 導讀 ] 馬爾科夫鏈、主成分分析以及條件概率等

分分鐘掌握用photoshop將圖片轉化為背景透明的png技能-ps2017

需求:將背景為白色的jpg轉化為背景透明的png;方法2:適用於背景色與實物色不一樣解鎖->複製圖層->選擇->色彩範圍->使用取色器選擇需要保留的顏色->確定->c

徹底了解JAVASE、JAVAEE、JAVAWEB整個的知識體系

javaweb 分享圖片 知識 TP 技術分享 了解 src bubuko ima 幾張圖讓你徹底了解JAVASE、JAVAEE、JAVAWEB整個的知識體系

了解傳統項目管理與敏捷項目管理的區別

項目管理 敏捷項目管理 敏捷開發 一張圖助你了解傳統項目管理與敏捷項目管理的區別

徹底理解js原型鏈

function Person() { this.name = 'sanlyshi'; this.age = '23'; this.eat = function () { console.log(this.name +' is eating!')

三十看清紅黑樹的前世今生

> 微信公眾號:小超說 > 這是查詢算法系列的第三篇 : 三十張圖助你看清紅黑樹的前世今生 ![](https://user-gold-cdn.xitu.io/2020/7/5/1731f16ccb8c278c?w=704&h=698&f=png&s=48026) &

【計算機內功心法】六:10徹底理解回撥函式

不知你是不是也有這樣的疑惑,我們為什麼需要回調函式這個概念呢?直接呼叫函式不就可以了?回撥函式到底有什麼作用?程式設計師到底該如何理解回撥函式? 這篇文章就來為你解答這些問題,讀完這篇文章後你的武器庫將新增一件功能強大的利器。 一切要從這樣的需求說起 假設你們公司要開發下一代國民App“明日油條”,一款主打

理解 HTTP 狀態碼

HTTP狀態碼(HTTP Status Code)是用以表示網頁伺服器HTTP響應狀態的3位數字程式碼。 我們可以通過檢視HTTP狀態碼來判斷伺服器狀態,常見的有404 、502等;但是其他不是很常見的狀態碼都代表什麼狀態呢?下面有兩張有趣的圖片,讓你瞬間都能理解了。

【計算機網路】【HTTP】兩理解 HTTP 狀態碼! 2018-10-11

兩張趣圖助你理解 HTTP 狀態碼! HTTP狀態碼(HTTP Status Code)是用以表示網頁伺服器HTTP響應狀態的3位數字程式碼。 我們可以通過檢視HTTP狀態碼來判斷伺服器狀態,常見的有404 、502等;但是其他不是很常見的狀態碼都代表什麼狀態呢

掌握Python所有基礎知識,Python入門一足矣!

  今天用一張思維導圖彙總了Python基礎知識,與大家分享。第一張圖為總圖,之後為總圖的區域性。   總圖   區域性1   區域性2   結語 當然這只是基礎的入門階段,後續學

生成一個Android jar 庫。

教程 water b2c 是把 eas mod div log 第三方 我看到非常多教人使用第三方開源組件的Android教程。都是在教基於源代碼project的庫導入,個人覺得非常不妥,覺得最恰當的方式是把源代碼project生成一個jar再導入到目標project上

10 搞定 TensorFlow 數據讀取機制

小夥伴 圖片 文章 網上 如何 導讀在學習tensorflow的過程中,有很多小夥伴反映讀取數據這一塊很難理解。確實這一塊官方的教程比較簡略,網上也找不到什麽合適的學習材料。今天這篇文章就以圖片的形式,用最簡單的語言,為大家詳細解釋一下tensorflow的數據讀取機制,文章的最後還會給出

4看懂分布式架構從硬件到軟件

開發 基本 行處理 倉庫 tcp -1 管理 img 必須 對於分布式的架構相對很多開發者都是個高大上的項目,其實只要看得懂圖精通tcp通信、精通磁盤管理、精通內存管理、精通多線程與並行處理,精通事務(其實事務就是基於tcp通信層所擴展而來的MQ之類的一種IO消息模式而與)

告訴angular2所有知識點

技術分享 代碼 自動化 我想 合作 .cn 動畫 image 框架 忙活了半年,從angular2.0到現在angular4.2。從沒AOT到有AOT。我想說,angular2的學習曲線真的有點陡峭。只能說,angular2是一個比較完整的框架,框架就是這樣,一大堆條條框框

JavaScript實現簡單圖片滾動 --9告訴,C羅欲哭無淚

charset () element edit fas 簡單圖 pad jpg sni 源代碼下載:http://download.csdn.net/detail/u011043843/7510425 昨晚德國和葡萄牙的焦點之戰你看了嗎?北京時間淩晨的比賽

理解 docker 基本原理及快速入門

uil dir commit -name name 地址 什麽 生成 作者 http://www.cnblogs.com/SzeCheng/p/6822905.html 寫的非常好的一篇文章,不知道為什麽被刪除了。 利用Google快照,做個存檔。 快照地址:

告訴Raid的玩法

raid 概念一張圖告訴你Raid的玩法

Python 基礎 一告訴PyCharm如何進行斷點除錯

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

分析HTML、JS與PHP之間的資料傳輸

在電商網站搭建過程中,前端經常會向後端請求資料,有時候通過HTML、JS和PHP檔案的處理來實現資料的連通。通常情況下,使用者在HTML中做關鍵字操作,JS對提交的表單進行資料處理,向後端發起ajax請求對應PHP的api介面,PHP在接收到資料後對連線伺服器,伺服器再通過PHP中的SQL語句對資料

首部欄位名 說明
Accept 使用者代理可處理的媒體型別
Accept-Charset 優先的字符集
Accept-Encoding 優先的內容編碼
Accept-Language 優先的語言(自然語言)
Authorization Web 認證資訊
Expect 期待伺服器的特定行為
From 使用者的電子郵箱地址
Host 請求資源所在伺服器
If-Match 比較實體標記(ETag)
If-Modified-Since 比較資源的更新時間
If-None-Match 比較實體標記(與 If-Match 相反)
If-Range 資源未更新時傳送實體 Byte 的範圍請求
If-Unmodified-Since 比較資源的更新時間(與 If-Modified-Since 相反)
Max-Forwards 最大傳輸逐跳數
Proxy-Authorization 代理伺服器要求客戶端的認證資訊
Range 實體的位元組範圍請求
Referer 對請求中 URI 的原始獲取方 傳輸編碼的優先順序