## HTTP簡介
HTTP是什么?它是干什么的?誰定義的?它包含什么?它有哪些規定?它...
#### HTTP全名是**Hyper Text Transfer Protocol(超文本傳輸協議)**
```
1. 是什么?
```
是一個用于傳輸超媒體文檔(例如 HTML)的[應用層](https://en.wikipedia.org/wiki/Application_Layer)**協議**。
**協議**?協議是什么鬼?某論壇 - 協議就是幾個人一起商量制定的共同遵守的規范。哦...,就是嘮出來的~
```
2. 是干什么的?
```
是為 Web 瀏覽器與 Web 服務器之間的通信而設計的。
```
3. 誰定義的?
```
**HTTP(**HyperText Transfer Protocol)是萬維網(World Wide Web)的基礎協議。自?**Tim Berners-Lee 博士**和他的團隊在1989-1991年間創造出來。
```
4. 那它進化了嗎?
```
答案是肯定的...而且屬于超進化...
> **HTTP/0.9 – 單行協議**
> 請求由單行指令構成,以唯一可用方法[`GET`](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Methods/GET "HTTP GET?方法請求指定的資源。使用 GET 的請求應該只用于獲取數據。")開頭,其后跟目標資源的路徑。
> 請求:(一旦連接到服務器,協議、服務器、端口號這些都不是必須的)。
~~~html
GET /index.html
~~~
> 響應: 只包含響應文檔本身。
~~~html
<HTML>
這是一個非常簡單的HTML頁面
</HTML>
~~~
> 跟后來的版本不同,HTTP/0.9 的響應內容并不包含HTTP頭,這意味著只有HTML文件可以傳送,無法傳輸其他類型的文件;也沒有狀態碼或錯誤代碼:一旦出現問題,一個特殊的包含問題描述信息的HTML文件將被返回,供人們查看。
*****
> **HTTP/1.0 – 構建可擴展性**
* 協議版本信息現在會隨著每個請求發送
* 狀態碼會在響應開始時發送,使瀏覽器能了解請求執行成功或失敗,并相應調整行為
* 引入了HTTP頭的概念,無論是對于請求還是響應,允許傳輸元數據,使協議變得非常靈活,更具擴展性。
* 在新HTTP頭的幫助下,具備了傳輸除純文本HTML文件以外其他類型文檔的能力。[`Content-Type`](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Content-Type "Content-Type 實體頭部用于指示資源的MIME類型?media type?。")
*****
> **HTTP/1.1 – 標準化的協議**
> HTTP/1.0 多種不同的實現方式在實際運用中顯得有些混亂,在1997年初,HTTP1.1 標準發布,就在HTTP/1.0 發布的幾個月后。
* 連接可以復用,節省了多次打開TCP連接加載網頁文檔資源的時間。
* 增加流水線操作,允許在第一個應答被完全發送之前就發送第二個請求,以降低通信延遲。
* 支持響應分塊。
* 引入額外的緩存控制機制。
* 引入內容協商機制,包括語言,編碼,類型等,并允許客戶端和服務器之間約定以最合適的內容進行交換。
* 能夠使不同域名配置在同一個IP地址的服務器上。
> 由于HTTP協議的可擴展性?– 創建新的頭部和方法是很容易的 – 即使HTTP/1.1協議進行過兩次修訂,[RFC 2616](https://tools.ietf.org/html/rfc2616)發布于1999年6月,而另外兩個文檔?[RFC 7230](https://tools.ietf.org/html/rfc7230)\-[RFC 7235](https://tools.ietf.org/html/rfc7235)發布于2014年6月,作為HTTP/2的預覽版本。HTTP協議已經穩定使用超過了15年。
*****
> **HTTP/2?- 為了更優異的表現**
* HTTP/2是二進制協議而不是文本協議。不再可讀,也不可無障礙的手動創建,改善的優化技術現在可被實施。
* 這是一個復用協議。并行的請求能在同一個鏈接中處理,移除了HTTP/1.x中順序和阻塞的約束。
* 壓縮了headers。因為headers在一系列請求中常常是相似的,其移除了重復和傳輸重復數據的成本。
* 其允許服務器在客戶端緩存中填充數據,通過一個叫服務器推送的機制來提前請求。
* 對Alt-Svc的支持允許了給定資源的位置和資源鑒定,允許了更智能的CDN緩沖機制。
* [`Client-Hints`](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Client-Hints "此頁面仍未被本地化, 期待您的翻譯!")的引入允許瀏覽器或者客戶端來主動交流它的需求,或者是硬件約束的信息給服務端。
* 在Cookie頭中引入安全相關的的前綴,現在幫助保證一個安全的cookie沒被更改過。
- 版本控制之Git簡介
- Git工作流程
- Git工作區、暫存區、版本庫
- Git 指令匯總
- Git 忽略文件規則 .gitignore
- pull request
- HTTP簡介
- HTTP - Keep-Alive
- HTTP緩存
- XMLHttpRequest
- Fetch
- 跨域
- HTTP 消息頭
- TCP/IP
- TCP首部
- IP首部
- IP 協議
- TCP/IP漫畫
- 前端開發規范
- 前端開發規范整理
- 前端未來規劃
- HTML思維導圖
- CSS思維導圖
- 布局
- position,float,display的關系和優先級
- line-height、height、font-size
- 移動端適配
- JS 對象
- JS 原型模式 - 創建對象
- JS 預編譯
- 探索JS引擎
- ES