HTTP 協議是 Hyper Text Transfer Protocol(超文本傳輸協議)的縮寫, 是用於從萬維網(WWW:World Wide Web )服務器傳輸超文本到本地瀏覽器的傳送協議。html
HTTP是一個基於 TCP/IP 通訊協議來傳遞數據(HTML 文件, 圖片文件, 查詢結果等)。web
HTTP協議工做於客戶端-服務端架構上。瀏覽器做爲HTTP客戶端經過URL向HTTP服務端即WEB服務器發送全部請求。
Web服務器有:Apache服務器,IIS服務器(Internet Information Services)等。
Web服務器根據接收到的請求後,向客戶端發送響應信息。
HTTP默認端口號爲80,可是你也能夠改成8080或者其餘端口。算法
請求行(request line)、請求頭部(header)、空行和請求數據四個部分組成 segmentfault
HTTP響應也由四個部分組成,分別是:狀態行、消息報頭、空行和響應正文 瀏覽器
HTTP 響應的起始行被稱做 狀態行 (status line),包含如下信息:
一、協議版本,一般爲 HTTP/1.1。
二、狀態碼 (status code),代表請求是成功或失敗。常見的狀態碼是 200,404,或 302。
三、狀態文本 (status text)。一個簡短的,純粹的信息,經過狀態碼的文本描述,幫助人們理解該 HTTP 消息。
一個典型的狀態行看起來像這樣:HTTP/1.1 404 Not Found。緩存
客戶端請求:安全
GET /hello.txt HTTP/1.1 User-Agent: curl/7.16.3 libcurl/7.16.3 OpenSSL/0.9.7l zlib/1.2.3 Host: www.example.com Accept-Language: en, mi
POST / HTTP1.1 Host:www.wrox.com User-Agent:Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022) Content-Type:application/x-www-form-urlencoded Content-Length:40 Connection: Keep-Alive name=Professional%20Ajax&publisher=Wiley
服務端響應:服務器
HTTP/1.1 200 OK Date: Mon, 27 Jul 2009 12:28:53 GMT Server: Apache Last-Modified: Wed, 22 Jul 2009 19:15:56 GMT ETag: "34aa387-d-1568eb00" Accept-Ranges: bytes Content-Length: 51 Vary: Accept-Encoding Content-Type: text/plain
一個URL地址,它用於描述一個網絡上的資源,而HTTP中的GET,POST,PUT,DELETE就對應着對這個資源的 查,改,增,刪 4個操做.網絡
GET --------- 從指定的資源請求數據
HEAD -------- 與 GET 相同,但只返回 HTTP 報頭,不返回文檔主體
POST -------- 向指定的資源提交要被處理的數據
PUT --------- 未來自客戶端的數據存儲到一個命名的服務器資源中去
DELETE ------ 刪除指定資源
CONNECT ----- 把請求鏈接轉換到透明的 TCP/IP 通道
OPTIONS ----- 返回服務器支持的 HTTP 方法
TRACE ------- 沿着到目標資源的路徑執行一個消息環回測試
PATCH ------- 用於對資源應用部分修改架構
GET和POST本質上就是TCP連接,並沒有差異。可是因爲HTTP的規定和瀏覽器/服務器的限制,致使他們在應用過程當中體現出一些不一樣。
GET和POST還有一個重大區別,簡單的說:
GET產生一個TCP數據包;POST產生兩個TCP數據包。
長的說:
對於GET方式的請求,瀏覽器會把http header和data一併發送出去,服務器響應200(返回數據);
而對於POST,瀏覽器先發送header,服務器響應100 continue,瀏覽器再發送data,服務器響應200 ok(返回數據)。
本模塊原文地址: https://mp.weixin.qq.com/s?__...
應答頭 | 說明 |
---|---|
Allow | 服務器支持哪些請求方法(如GET、POST等)。 |
Content-Encoding | 文檔的編碼方法。 |
Content-Length | 內容長度。 |
Date | 當前的 GMT 時間。 |
Expires | 文檔過時時間 |
Last-Modified | 文檔的最後改動時間。 |
Location | 表示客戶應當到哪裏去提取文檔。 |
Refresh | 表示瀏覽器應該在多少時間以後刷新文檔,以秒計。 |
Server | 服務器名字 |
Set-Cookie | 設置和頁面關聯的 Cookie |
WWW-Authenticate | 客戶應該在 Authenticate 頭中提供什麼類型的受權信息 |
本模塊原文地址:http://www.runoob.com/http/ht...
private --- 客戶端能夠緩存 public --- 客戶端和代理服務器均可緩存 max-age = XXX --- 緩存的內容將在 XXX 秒後失效 no-cache --- 須要使用 對比緩存 來驗證緩存數據 no-store --- 全部內容都不會緩存 must-revalidate --- 必須先驗證它的狀態
一、Etag / If-None-Match
二、Last-Modified / If-Modified-Since
from disk cache
from memory cache
對於強制緩存,服務器通知瀏覽器一個緩存時間,在緩存時間內,下次請求,直接用緩存,不在時間內,執行比較緩存策略。
對於比較緩存,將緩存信息中的Etag和Last-Modified經過請求發送給服務器,由服務器校驗,返回304狀態碼時,瀏覽器直接使用緩存。
瀏覽器第一次請求:
瀏覽器再次請求:
HTTPS(Hypertext Transfer Protocol Secure:超文本傳輸安全協議)是一種透過計算機網絡進行安全通訊的傳輸協議。HTTPS 經由 HTTP 進行通訊,但利用 SSL/TLS 來加密數據包。HTTPS 開發的主要目的,是提供對網站服務器的身份認證,保護交換數據的隱私與完整性。
HTTPS 默認工做在 TCP 協議 443 端口,它的工做流程通常如如下方式:
一、TCP 三次同步握手
二、客戶端驗證服務器數字證書
三、DH 算法協商對稱加密算法的密鑰、hash 算法的密鑰
四、SSL 安全加密隧道協商完成
五、網頁以加密的方式傳輸,用協商的對稱加密算法和密鑰加密,保證數據機密性;用協商的hash算法進行數據完整性保護,保證數據不被篡改。
HTTPS 其實就是建構在 SSL/TLS 之上的 HTTP 協議,因此,要比較 HTTPS 比 HTTP 要更耗費服務器資源。
本模塊原文地址: http://www.runoob.com/w3cnote...
其餘資料地址:https://www.jb51.net/yunying/...
URI = Universal Resource Identifier 統一資源標誌符
URL = Universal Resource Locator 統一資源定位符
URN = Universal Resource Name 統一資源名稱
「A Uniform Resource Identifier (URI) 是一個緊湊的字符串用來標示抽象或物理資源。」
「A URI 能夠進一步被分爲定位符、名字或二者都是. 術語「Uniform Resource Locator」 (URL) 是 URI 的子集, 除了肯定一個資源,還提供一種定位該資源的主要訪問機制(如其網絡「位置」)。」
「URI 能夠分爲 URL, URN 或同時具有 locators 和 names 特性的一個東西。URN 做用就好像一我的的名字,URL 就像一我的的地址。換句話說:URN肯定了東西的身份,URL提供了找到它的方式。」 ———— 維基百科
URI 例子:
- ftp://ftp.is.co.za/rfc/rfc1808.txt - http://www.ietf.org/rfc/rfc2396.txt - ldap://[2001:db8::7]/c=GB?objectClass?one - mailto:John.Doe@example.com - news:comp.infosystems.www.servers.unix - tel:+1-816-555-1212 - telnet://192.0.2.16:80/ - urn:oasis:names:specification:docbook:dtd:xml:4.1.2
本模塊原文地址:https://www.cnblogs.com/wuyun...
URL - Universal Resource Locator 統一資源定位符
Web 瀏覽器經過 URL 從 Web 服務器請求頁面。
當您點擊 HTML 頁面中的某個連接時,對應的 <a>
標籤指向萬維網上的一個地址。
一個 URL 用於定位萬維網上的文檔。
一個網頁地址實例: http://www.runoob.com/html/html-tutorial.html
scheme://host.domain:port/path/filename
說明:
Scheme | 訪問 | 用於... |
---|---|---|
http | 超文本傳輸協議 | 以 http:// 開頭的普通網頁。不加密。 |
https | 安全超文本傳輸協議 | 安全網頁,加密全部信息交換。 |
ftp | 文件傳輸協議 | 用於將文件下載或上傳至網站。 |
file | 您計算機上的文件。 |
URL 只能使用 ASCII 字符集. ASCII 集合以外的字符,URL 必須轉換爲有效的 ASCII 格式。
URL 編碼使用 "%" 其後跟隨兩位的十六進制數來替換非 ASCII 字符。
URL 不能包含空格。URL 編碼一般使用 + 來替換空格。
本模塊原文地址: http://www.runoob.com/html/ht...