不管是之後用webserveice ,仍是用rest作大型架構,都離不開對HTTP協議的認識javascript
甚至能夠簡化的說:html
webservice = http協議+XMLjava
Rest = http協議 + jsonnode
各類API,也通常使用HTTP+XMl/json 來實現的nginx
往小來講,好比:小偷站也須要對HTTP協議有所瞭解web
以及AJax對HTTP協議有了解以後,學習AJax是很是容易理解的json
計算機中的協議和現實中的協議是同樣的,一式說份/多份跨域
雙方/多方都聽從共同的一個規範,這個規範就能夠成爲協議瀏覽器
計算機之因此能全世界互通,協議是功不可沒,若是沒有協議。家算計各說各話,根本誰都聽不懂誰緩存
計算機的協議有:
ftp,http,stmp,pop,tcp/ip 協議 等等......
http協議就是客戶端按必定規則,向服務器要數據或發送數據,而服務器按必定規則,迴應數據
1.1. 請求行又分3部分
請求方法 請求路徑 所用的協議
格式如: GET /0708/hello.js HTTP/1.1
請求方法:GET
/ POST
/ PUT
/ DELETE
/ TRACE
/ OPTIONS
注意:這些請求方法雖然是HTTP協議裏規定的,單WEB SERVER未必容許或支持這些方法
協議頭 | 說明 | 示例 | 狀態 |
---|---|---|---|
Accept | 可接受的響應內容類型(Content-Types )。 |
Accept: text/plain |
固定 |
Accept-Charset | 可接受的字符集 | Accept-Charset: utf-8 |
固定 |
Accept-Encoding | 可接受的響應內容的編碼方式。 | Accept-Encoding: gzip, deflate |
固定 |
Accept-Language | 可接受的響應內容語言列表。 | Accept-Language: en-US |
固定 |
Accept-Datetime | 可接受的按照時間來表示的響應內容版本 | Accept-Datetime: Sat, 26 Dec 2015 17:30:00 GMT | 臨時 |
Authorization | 用於表示HTTP協議中須要認證資源的認證信息 | Authorization: Basic OSdjJGRpbjpvcGVuIANlc2SdDE== | 固定 |
Cache-Control | 用來指定當前的請求/回覆中的,是否使用緩存機制。 | Cache-Control: no-cache |
固定 |
Connection | 客戶端(瀏覽器)想要優先使用的鏈接類型 | Connection: keep-alive``Connection: Upgrade |
固定 |
Cookie | 由以前服務器經過Set-Cookie (見下文)設置的一個HTTP協議Cookie |
Cookie: $Version=1; Skin=new; |
固定:標準 |
Content-Length | 以8進製表示的請求體的長度 | Content-Length: 348 |
固定 |
Content-MD5 | 請求體的內容的二進制 MD5 散列值(數字簽名),以 Base64 編碼的結果 | Content-MD5: oD8dH2sgSW50ZWdyaIEd9D== | 廢棄 |
Content-Type | 請求體的MIME類型 (用於POST和PUT請求中) | Content-Type: application/x-www-form-urlencoded | 固定 |
Date | 發送該消息的日期和時間(以RFC 7231中定義的"HTTP日期"格式來發送) | Date: Dec, 26 Dec 2015 17:30:00 GMT | 固定 |
Expect | 表示客戶端要求服務器作出特定的行爲 | Expect: 100-continue |
固定 |
From | 發起此請求的用戶的郵件地址 | From: user@itbilu.com |
固定 |
Host | 表示服務器的域名以及服務器所監聽的端口號。若是所請求的端口是對應的服務的標準端口(80),則端口號能夠省略。 | Host: www.itbilu.com:80``Host: www.itbilu.com |
固定 |
If-Match | 僅當客戶端提供的實體與服務器上對應的實體相匹配時,才進行對應的操做。主要用於像 PUT 這樣的方法中,僅當從用戶上次更新某個資源後,該資源未被修改的狀況下,才更新該資源。 | If-Match: "9jd00cdj34pss9ejqiw39d82f20d0ikd" | 固定 |
If-Modified-Since | 容許在對應的資源未被修改的狀況下返回304未修改 | If-Modified-Since: Dec, 26 Dec 2015 17:30:00 GMT | 固定 |
If-None-Match | 容許在對應的內容未被修改的狀況下返回304未修改( 304 Not Modified ),參考 超文本傳輸協議 的實體標記 | If-None-Match: "9jd00cdj34pss9ejqiw39d82f20d0ikd" | 固定 |
If-Range | 若是該實體未被修改過,則向返回所缺乏的那一個或多個部分。不然,返回整個新的實體 | If-Range: "9jd00cdj34pss9ejqiw39d82f20d0ikd" | 固定 |
If-Unmodified-Since | 僅當該實體自某個特定時間以來未被修改的狀況下,才發送迴應。 | If-Unmodified-Since: Dec, 26 Dec 2015 17:30:00 GMT | 固定 |
Max-Forwards | 限制該消息可被代理及網關轉發的次數。 | Max-Forwards: 10 |
固定 |
Origin | 發起一個針對跨域資源共享的請求(該請求要求服務器在響應中加入一個Access-Control-Allow-Origin 的消息頭,表示訪問控制所容許的來源)。 |
Origin: http://www.itbilu.com |
固定: 標準 |
Pragma | 與具體的實現相關,這些字段可能在請求/迴應鏈中的任什麼時候候產生。 | Pragma: no-cache |
固定 |
Proxy-Authorization | 用於向代理進行認證的認證信息。 | Proxy-Authorization: Basic IOoDZRgDOi0vcGVuIHNlNidJi2== | 固定 |
Range | 表示請求某個實體的一部分,字節偏移以0開始。 | Range: bytes=500-999 |
固定 |
Referer | 表示瀏覽器所訪問的前一個頁面,能夠認爲是以前訪問頁面的連接將瀏覽器帶到了當前頁面。Referer 實際上是Referrer 這個單詞,但RFC製做標準時給拼錯了,後來也就將錯就錯使用Referer 了。 |
Referer: itbilu.com/nodejs | 固定 |
TE | 瀏覽器預期接受的傳輸時的編碼方式:可以使用迴應協議頭Transfer-Encoding 中的值(還可使用"trailers"表示數據傳輸時的分塊方式)用來表示瀏覽器但願在最後一個大小爲0的塊以後還接收到一些額外的字段。 |
TE: trailers,deflate |
固定 |
User-Agent | 瀏覽器的身份標識字符串 | User-Agent: Mozilla/…… |
固定 |
Upgrade | 要求服務器升級到一個高版本協議。 | Upgrade: HTTP/2.0, SHTTP/1.3, IRC/6.9, RTA/x11 | 固定 |
Via | 告訴服務器,這個請求是由哪些代理髮出的。 | Via: 1.0 fred, 1.1 itbilu.com.com (Apache/1.1) | 固定 |
Warning | 一個通常性的警告,表示在實體內容體中可能存在錯誤。 | Warning: 199 Miscellaneous warning | 固定 |
響應頭 | 說明 | 示例 | 狀態 |
---|---|---|---|
Access-Control-Allow-Origin | 指定哪些網站能夠跨域源資源共享 |
Access-Control-Allow-Origin: * |
臨時 |
Accept-Patch | 指定服務器所支持的文檔補丁格式 | Accept-Patch: text/example;charset=utf-8 | 固定 |
Accept-Ranges | 服務器所支持的內容範圍 | Accept-Ranges: bytes |
固定 |
Age | 響應對象在代理緩存中存在的時間,以秒爲單位 | Age: 12 |
固定 |
Allow | 對於特定資源的有效動做; | Allow: GET, HEAD |
固定 |
Cache-Control | 通知從服務器到客戶端內的全部緩存機制,表示它們是否能夠緩存這個對象及緩存有效時間。其單位爲秒 | Cache-Control: max-age=3600 |
固定 |
Connection | 針對該鏈接所預期的選項 | Connection: close |
固定 |
Content-Disposition | 對已知MIME類型資源的描述,瀏覽器能夠根據這個響應頭決定是對返回資源的動做,如:將其下載或是打開。 | Content-Disposition: attachment; filename="fname.ext" | 固定 |
Content-Encoding | 響應資源所使用的編碼類型。 | Content-Encoding: gzip |
固定 |
Content-Language | 響就內容所使用的語言 | Content-Language: zh-cn |
固定 |
Content-Length | 響應消息體的長度,用8進制字節表示 | Content-Length: 348 |
固定 |
Content-Location | 所返回的數據的一個候選位置 | Content-Location: /index.htm |
固定 |
Content-MD5 | 響應內容的二進制 MD5 散列值,以 Base64 方式編碼 | Content-MD5: IDK0iSsgSW50ZWd0DiJUi== | 已淘汰 |
Content-Range | 若是是響應部分消息,表示屬於完整消息的哪一個部分 | Content-Range: bytes 21010-47021/47022 | 固定 |
Content-Type | 當前內容的MIME 類型 |
Content-Type: text/html; charset=utf-8 | 固定 |
Date | 此條消息被髮送時的日期和時間(以RFC 7231中定義的"HTTP日期"格式來表示) | Date: Tue, 15 Nov 1994 08:12:31 GMT | 固定 |
ETag | 對於某個資源的某個特定版本的一個標識符,一般是一個 消息散列 | ETag: "737060cd8c284d8af7ad3082f209582d" | 固定 |
Expires | 指定一個日期/時間,超過該時間則認爲此迴應已通過期 | Expires: Thu, 01 Dec 1994 16:00:00 GMT | 固定: 標準 |
Last-Modified | 所請求的對象的最後修改日期(按照 RFC 7231 中定義的「超文本傳輸協議日期」格式來表示) | Last-Modified: Dec, 26 Dec 2015 17:30:00 GMT | 固定 |
Link | 用來表示與另外一個資源之間的類型關係,此類型關係是在RFC 5988中定義 | Link: ; rel="alternate" |
固定 |
Location | 用於在進行重定向,或在建立了某個新資源時使用。 | Location: www.itbilu.com/nodejs | 固定 |
P3P | P3P策略相關設置 | P3P: CP="This is not a P3P policy! | 固定 |
Pragma | 與具體的實現相關,這些響應頭可能在請求/迴應鏈中的不一樣時候產生不一樣的效果 | Pragma: no-cache |
固定 |
Proxy-Authenticate | 要求在訪問代理時提供身份認證信息。 | Proxy-Authenticate: Basic |
固定 |
Public-Key-Pins | 用於防止中間攻擊,聲明網站認證中傳輸層安全協議的證書散列值 | Public-Key-Pins: max-age=2592000; pin-sha256="……"; | 固定 |
Refresh | 用於重定向,或者當一個新的資源被建立時。默認會在5秒後刷新重定向。 | Refresh: 5; url=http://itbilu.com | |
Retry-After | 若是某個實體臨時不可用,那麼此協議頭用於告知客戶端稍後重試。其值能夠是一個特定的時間段(以秒爲單位)或一個超文本傳輸協議日期。 | 示例1:Retry-After: 120示例2: Retry-After: Dec, 26 Dec 2015 17:30:00 GMT | 固定 |
Server | 服務器的名稱 | Server: nginx/1.6.3 |
固定 |
Set-Cookie | 設置HTTP cookie |
Set-Cookie: UserID=itbilu; Max-Age=3600; Version=1 | 固定: 標準 |
Status | 通用網關接口的響應頭字段,用來講明當前HTTP鏈接的響應狀態。 | Status: 200 OK |
|
Trailer | Trailer 用戶說明傳輸中分塊編碼的編碼信息 |
Trailer: Max-Forwards |
固定 |
Transfer-Encoding | 用表示實體傳輸給用戶的編碼形式。包括:chunked 、compress 、 deflate 、gzip 、identity 。 |
Transfer-Encoding: chunked | 固定 |
Upgrade | 要求客戶端升級到另外一個高版本協議。 | Upgrade: HTTP/2.0, SHTTP/1.3, IRC/6.9, RTA/x11 | 固定 |
Vary | 告知下游的代理服務器,應當如何對之後的請求協議頭進行匹配,以決定是否可以使用已緩存的響應內容而不是從新從原服務器請求新的內容。 | Vary: * |
固定 |
Via | 告知代理服務器的客戶端,當前響應是經過什麼途徑發送的。 | Via: 1.0 fred, 1.1 itbilu.com (nginx/1.6.3) | 固定 |
Warning | 通常性警告,告知在實體內容體中可能存在錯誤。 | Warning: 199 Miscellaneous warning | 固定 |
WWW-Authenticate | 表示在請求獲取這個實體時應當使用的認證模式。 | WWW-Authenticate: Basic |
固定 |