SlideShare una empresa de Scribd logo
1 de 14
初學者都該了解的 HTTP 通訊協定基礎
Hypertext Transfer Protocol
多奇數位創意有限公司
技術總監 黃保翕 ( Will 保哥 )
部落格:http://blog.miniasp.com/
超文本傳輸協定 ( HTTP )
Hypertext Transfer Protocol
目前 HTTP 通訊協定的版本
• HTTP/0.9
– 於 1991 年發表 (已廢止)
• HTTP/1.0
– 於 1996 年 5 月發表( RFC 1945 )
• HTTP/1.1
– 於 1997 年 1 月發表( RFC 2068 )
– 於 1999 年 6 月發布 HTTP/1.1 更新版 ( RFC 2616 )
– 於 2014 年 6 月再次更新 HTTP/1.1 並將規格文件拆成六份
• HTTP/2 (Wikipedia)
– 於 2015 年 5 月發布 ( RFC 7540 ) (瀏覽器相容性)
– 僅針對 HTTP/1.1 的 Message Syntax 部分做出強化
3
HTTP/0.9
• 於 1990 年由 Tim Berners-Lee 提出最初的 HTTP 建議
( WWW )
• 實作重點
– 用戶端要求是以 ASCII 字元為主 ( 單行命令即可發出要求  GET / )
– 用戶端要求會以一個 換行字元 (CRLF) 來結束
– 伺服器回應是以 ASCII 字元為主,回應內容為是 HTML 文件
– 每次執行完 Request / Response 就會自動關閉連線
• 主要特點
– Client / Server 架構、Request / Response 協定
– 跑在 TCP/IP 上的 ASCII 協定 (要求/回應)
– 被設計用來傳輸 HTML 文件
– 每完成一次 ASCII 協定就會自動關閉連線
4
5
$ telnet google.com 80
Trying 172.217.24.14...
Connected to google.com.
Escape character is '^]'.
GET /about
HTTP/1.0 301 Moved Permanently
Location: http://www.google.com/about/
Content-Type: text/html; charset=UTF-8
X-Content-Type-Options: nosniff
Date: Sat, 17 Jun 2017 03:23:44 GMT
Expires: Mon, 17 Jul 2017 03:23:44 GMT
Server: sffe
Content-Length: 225
X-XSS-Protection: 1; mode=block
Cache-Control: public, max-age=2592000
Age: 252414
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>301 Moved</TITLE></HEAD><BODY>
<H1>301 Moved</H1>
The document has moved
<A HREF="http://www.google.com/about/">here</A>.
</BODY></HTML>
Connection closed by foreign host.
HTTP/1.0
• 在 1991 到 1995 年之間,所謂 瀏覽器 騰空出世!
• 於 1996 年 5 月發表 HTTP/1.0 版 ( RFC 1945 )
• 與 HTTP/0.9 不同的部分
– 用戶端要求是以 ASCII 字元為主,但可發送多行命令 (含要求標頭)
• 先送出要求方法,再送出要求標題,最後以一個 額外的換行字元 結束
– 伺服器回應是以 ASCII 字元為主,回應內容會區分
• 狀態列
• 回應標頭
• 回應內文主體 ( 不僅僅是 HTML 文件,可以是更多內容類型 )
– 每完成一次 Request / Response 交握就會自動關閉 TCP/IP 連線
6
7
$ telnet google.com 80
Trying 172.217.24.14...
Connected to google.com.
Escape character is '^]'.
GET /about HTTP/1.0
HTTP/1.0 301 Moved Permanently
Location: http://www.google.com/about/
Content-Type: text/html; charset=UTF-8
X-Content-Type-Options: nosniff
Date: Sat, 17 Jun 2017 03:23:44 GMT
Expires: Mon, 17 Jul 2017 03:23:44 GMT
Server: sffe
Content-Length: 225
X-XSS-Protection: 1; mode=block
Cache-Control: public, max-age=2592000
Age: 252414
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>301 Moved</TITLE></HEAD><BODY>
<H1>301 Moved</H1>
The document has moved
<A HREF="http://www.google.com/about/">here</A>.
</BODY></HTML>
Connection closed by foreign host.
HTTP/1.1
• 於 1997 年 1 月發表 HTTP/1.1 版 ( RFC 1945 )
• 於 1999 年 6 月發布 HTTP/1.1 更新版 ( RFC 2616 )
• 與 HTTP/1.0 不同的部分
– 傳輸協議的效能改進 ( 新增不少 HTTP 標頭定義 )
• 持續連線狀態 ( persistent connection ) ( MDN )
• 切塊編碼傳輸 ( chunked encoding transfer ) ( MDN )
• 位元範圍請求 ( byte range request ) ( MDN )
• 額外快取機制 ( cache control )
• 請求管線作業 ( request pipelining ) ( 需搭配持續連接狀態特性才能用 )
8
9
$ telnet www.miniasp.com 80
Trying 172.217.24.14...
Connected to google.com.
Escape character is '^]'.
GET / HTTP/1.1
Host: www.miniasp.com
Connection: close
Range: bytes=0-20
HTTP/1.1 206 Partial Content
Content-Length: 21
Content-Type: text/html
Content-Range: bytes 0-20/21540
Last-Modified: Tue, 11 Aug 2015 09:45:01 GMT
Accept-Ranges: bytes
ETag: "d1309b641ad4d01:0"
Server: Microsoft-IIS/8.0
X-Powered-By: ASP.NET
Set-Cookie:
ARRAffinity=de668c30a13e01616d34fb3773ed38c1363f5c626ca6001081524d8948435956;Path
=/;Domain=www.miniasp.com
Date: Tue, 20 Jun 2017 06:23:12 GMT
Connection: close
<!DOCTYPE html>
<htmConnection closed by foreign host.
目前 HTTP/1.1 的六大規格
• RFC 7230 HTTP/1.1: Message Syntax and Routing
• RFC 7231 HTTP/1.1: Semantics and Content (最重要)
• RFC 7232 HTTP/1.1: Conditional Requests
• RFC 7233 HTTP/1.1: Range Requests
• RFC 7234 HTTP/1.1: Caching
• RFC 7235 HTTP/1.1: Authentication
10
關於 HTTP 通訊協定的基本常識
• The Hypertext Transfer Protocol (HTTP) is a stateless
application-level protocol for distributed, collaborative,
hypertext information systems.
– 無狀態特性 ( stateless )
– 分散式架構 ( distributed )
– 協作的架構 ( collaborative )
– 超本文 ( hypertext = not just "text" but with "links" )
11
初學者應了解 HTTP 的基本運作方式
• 如何發出 HTTP 要求 (HTTP Request)
– 要求方法 ( Request Methods )
• GET, POST, DELETE, PUT, PATCH, …
– 要求標頭 ( Request Headers )
• Connection, Content-Type, Accept-Language, …
– 斷行符號 ( CRLF )
– 要求內容主體 ( Request Body )
• 如何回應 HTTP 訊息 (HTTP Response)
– 回應狀態碼 ( Response Status Codes )
• HTTP/1.1 200 OK
– 回應標頭 ( Response Headers )
– 斷行符號 ( CRLF )
– 回應內容主體 ( Response Body) 12
相關連結
• 必備工具
– Postman
– Fiddler free web debugging proxy
• 推薦書籍
– 高效能網站開發指南
– 高效能網站建置指南
– Web 效能優化日誌 Volume 2
• 報名課程
– 2017/07/01 (六) 《台北》ASP.NET Web API 2 開發實戰
– 2017/07/16 (日)《高雄》ASP.NET Web API 2 開發實戰
13
聯絡資訊
• The Will Will Web
記載著 Will 在網路世界的學習心得與技術分享
– http://blog.miniasp.com/
• Will 保哥的技術交流中心 (臉書粉絲專頁)
– http://www.facebook.com/will.fans
• Will 保哥的噗浪
– http://www.plurk.com/willh/invite
• Will 保哥的推特
– https://twitter.com/Will_Huang

Más contenido relacionado

La actualidad más candente

FHIR Server 安裝與使用
FHIR Server 安裝與使用FHIR Server 安裝與使用
FHIR Server 安裝與使用Lorex L. Yang
 
啟動 Laravel 與環境設定
啟動 Laravel 與環境設定啟動 Laravel 與環境設定
啟動 Laravel 與環境設定Shengyou Fan
 
Top 5 Mistakes When Writing Spark Applications
Top 5 Mistakes When Writing Spark ApplicationsTop 5 Mistakes When Writing Spark Applications
Top 5 Mistakes When Writing Spark ApplicationsSpark Summit
 
滲透測試 Talk @ Nisra
滲透測試 Talk @ Nisra滲透測試 Talk @ Nisra
滲透測試 Talk @ NisraOrange Tsai
 
第一次Elasticsearch就上手
第一次Elasticsearch就上手第一次Elasticsearch就上手
第一次Elasticsearch就上手Aaron King
 
(참고) Elk stack 설치 및 kafka
(참고) Elk stack 설치 및 kafka(참고) Elk stack 설치 및 kafka
(참고) Elk stack 설치 및 kafkaNoahKIM36
 
技術的負債との戦い方
技術的負債との戦い方技術的負債との戦い方
技術的負債との戦い方Iosif Takakura
 
I got 99 problems, but ReST ain't one
I got 99 problems, but ReST ain't oneI got 99 problems, but ReST ain't one
I got 99 problems, but ReST ain't oneAdrian Cole
 
InfluxDB の概要 - sonots #tokyoinfluxdb
InfluxDB の概要 - sonots #tokyoinfluxdbInfluxDB の概要 - sonots #tokyoinfluxdb
InfluxDB の概要 - sonots #tokyoinfluxdbNaotoshi Seo
 
Inter-Process Communication in Microservices using gRPC
Inter-Process Communication in Microservices using gRPCInter-Process Communication in Microservices using gRPC
Inter-Process Communication in Microservices using gRPCShiju Varghese
 
카프카(kafka) 성능 테스트 환경 구축 (JMeter, ELK)
카프카(kafka) 성능 테스트 환경 구축 (JMeter, ELK)카프카(kafka) 성능 테스트 환경 구축 (JMeter, ELK)
카프카(kafka) 성능 테스트 환경 구축 (JMeter, ELK)Hyunmin Lee
 
你一定不能不知道的 Markdown 寫作技巧
你一定不能不知道的 Markdown 寫作技巧你一定不能不知道的 Markdown 寫作技巧
你一定不能不知道的 Markdown 寫作技巧Will Huang
 
Wiresharkの解析プラグインを作る ssmjp 201409
Wiresharkの解析プラグインを作る ssmjp 201409Wiresharkの解析プラグインを作る ssmjp 201409
Wiresharkの解析プラグインを作る ssmjp 201409稔 小林
 
Spring Caches with Protocol Buffers
Spring Caches with Protocol BuffersSpring Caches with Protocol Buffers
Spring Caches with Protocol BuffersVMware Tanzu
 
Introduction to Storm
Introduction to Storm Introduction to Storm
Introduction to Storm Chandler Huang
 

La actualidad más candente (20)

Optimizing and Profiling Golang Rest Api
Optimizing and Profiling Golang Rest ApiOptimizing and Profiling Golang Rest Api
Optimizing and Profiling Golang Rest Api
 
CSS 語法教學
CSS 語法教學CSS 語法教學
CSS 語法教學
 
FHIR Server 安裝與使用
FHIR Server 安裝與使用FHIR Server 安裝與使用
FHIR Server 安裝與使用
 
啟動 Laravel 與環境設定
啟動 Laravel 與環境設定啟動 Laravel 與環境設定
啟動 Laravel 與環境設定
 
Top 5 Mistakes When Writing Spark Applications
Top 5 Mistakes When Writing Spark ApplicationsTop 5 Mistakes When Writing Spark Applications
Top 5 Mistakes When Writing Spark Applications
 
滲透測試 Talk @ Nisra
滲透測試 Talk @ Nisra滲透測試 Talk @ Nisra
滲透測試 Talk @ Nisra
 
HTTP/2, QUIC入門
HTTP/2, QUIC入門HTTP/2, QUIC入門
HTTP/2, QUIC入門
 
第一次Elasticsearch就上手
第一次Elasticsearch就上手第一次Elasticsearch就上手
第一次Elasticsearch就上手
 
(참고) Elk stack 설치 및 kafka
(참고) Elk stack 설치 및 kafka(참고) Elk stack 설치 및 kafka
(참고) Elk stack 설치 및 kafka
 
技術的負債との戦い方
技術的負債との戦い方技術的負債との戦い方
技術的負債との戦い方
 
I got 99 problems, but ReST ain't one
I got 99 problems, but ReST ain't oneI got 99 problems, but ReST ain't one
I got 99 problems, but ReST ain't one
 
InfluxDB の概要 - sonots #tokyoinfluxdb
InfluxDB の概要 - sonots #tokyoinfluxdbInfluxDB の概要 - sonots #tokyoinfluxdb
InfluxDB の概要 - sonots #tokyoinfluxdb
 
WebSocket / WebRTCの技術紹介
WebSocket / WebRTCの技術紹介WebSocket / WebRTCの技術紹介
WebSocket / WebRTCの技術紹介
 
Inter-Process Communication in Microservices using gRPC
Inter-Process Communication in Microservices using gRPCInter-Process Communication in Microservices using gRPC
Inter-Process Communication in Microservices using gRPC
 
카프카(kafka) 성능 테스트 환경 구축 (JMeter, ELK)
카프카(kafka) 성능 테스트 환경 구축 (JMeter, ELK)카프카(kafka) 성능 테스트 환경 구축 (JMeter, ELK)
카프카(kafka) 성능 테스트 환경 구축 (JMeter, ELK)
 
你一定不能不知道的 Markdown 寫作技巧
你一定不能不知道的 Markdown 寫作技巧你一定不能不知道的 Markdown 寫作技巧
你一定不能不知道的 Markdown 寫作技巧
 
HTTP入門
HTTP入門HTTP入門
HTTP入門
 
Wiresharkの解析プラグインを作る ssmjp 201409
Wiresharkの解析プラグインを作る ssmjp 201409Wiresharkの解析プラグインを作る ssmjp 201409
Wiresharkの解析プラグインを作る ssmjp 201409
 
Spring Caches with Protocol Buffers
Spring Caches with Protocol BuffersSpring Caches with Protocol Buffers
Spring Caches with Protocol Buffers
 
Introduction to Storm
Introduction to Storm Introduction to Storm
Introduction to Storm
 

Destacado

TypeScript 綜合格鬥技
TypeScript 綜合格鬥技TypeScript 綜合格鬥技
TypeScript 綜合格鬥技Will Huang
 
Visual Studio 2015 與 Git 開發實戰
Visual Studio 2015 與 Git 開發實戰Visual Studio 2015 與 Git 開發實戰
Visual Studio 2015 與 Git 開發實戰Will Huang
 
你所不知道的 Microsoft Azure 雲端資源採購技巧 (2016 Azure 新春特惠方案)
你所不知道的 Microsoft Azure 雲端資源採購技巧 (2016 Azure 新春特惠方案)你所不知道的 Microsoft Azure 雲端資源採購技巧 (2016 Azure 新春特惠方案)
你所不知道的 Microsoft Azure 雲端資源採購技巧 (2016 Azure 新春特惠方案)Will Huang
 
快速上手 Windows Containers 容器技術 (Docker Taipei)
快速上手 Windows Containers 容器技術 (Docker Taipei)快速上手 Windows Containers 容器技術 (Docker Taipei)
快速上手 Windows Containers 容器技術 (Docker Taipei)Will Huang
 
SQL Server 資料庫版本控管
SQL Server 資料庫版本控管SQL Server 資料庫版本控管
SQL Server 資料庫版本控管Will Huang
 
《保哥線上講堂》打造一個具有 Linux 溫度的 Windows 命令提示字元工具
《保哥線上講堂》打造一個具有 Linux 溫度的 Windows 命令提示字元工具《保哥線上講堂》打造一個具有 Linux 溫度的 Windows 命令提示字元工具
《保哥線上講堂》打造一個具有 Linux 溫度的 Windows 命令提示字元工具Will Huang
 
簡介 Git hub 平台 ( 1.5 hrs )
簡介 Git hub 平台 ( 1.5 hrs )簡介 Git hub 平台 ( 1.5 hrs )
簡介 Git hub 平台 ( 1.5 hrs )Will Huang
 
Azure Web App on Linux @ Global Azure Bootcamp 2017 Taiwan
Azure Web App on Linux @ Global Azure Bootcamp 2017 TaiwanAzure Web App on Linux @ Global Azure Bootcamp 2017 Taiwan
Azure Web App on Linux @ Global Azure Bootcamp 2017 TaiwanWill Huang
 
簡介 GitHub 平台
簡介 GitHub 平台簡介 GitHub 平台
簡介 GitHub 平台Will Huang
 
快快樂樂學會 Angular 2 網站開發框架 (Modern Web 2016)
快快樂樂學會 Angular 2 網站開發框架 (Modern Web 2016)快快樂樂學會 Angular 2 網站開發框架 (Modern Web 2016)
快快樂樂學會 Angular 2 網站開發框架 (Modern Web 2016)Will Huang
 
Growth Mindset 經驗分享
Growth Mindset 經驗分享Growth Mindset 經驗分享
Growth Mindset 經驗分享Will Huang
 
ASP.NET 5 的創新與變革
ASP.NET 5 的創新與變革ASP.NET 5 的創新與變革
ASP.NET 5 的創新與變革Will Huang
 
中小企業選擇雲端服務的實戰密技
中小企業選擇雲端服務的實戰密技中小企業選擇雲端服務的實戰密技
中小企業選擇雲端服務的實戰密技Will Huang
 
使用 Angular 2 與 Firebase 實現 Serverless 網站架構 (JSDC.tw 2016)
使用 Angular 2 與 Firebase 實現 Serverless 網站架構 (JSDC.tw 2016)使用 Angular 2 與 Firebase 實現 Serverless 網站架構 (JSDC.tw 2016)
使用 Angular 2 與 Firebase 實現 Serverless 網站架構 (JSDC.tw 2016)Will Huang
 
git merge 與 rebase 的觀念與實務應用
git merge 與 rebase 的觀念與實務應用git merge 與 rebase 的觀念與實務應用
git merge 與 rebase 的觀念與實務應用Will Huang
 
DEV305 - ASP.NET 5 開發攻略
DEV305 - ASP.NET 5 開發攻略DEV305 - ASP.NET 5 開發攻略
DEV305 - ASP.NET 5 開發攻略Will Huang
 
Visual Studio 2017 新功能探索 (Study4.TW)
Visual Studio 2017 新功能探索 (Study4.TW)Visual Studio 2017 新功能探索 (Study4.TW)
Visual Studio 2017 新功能探索 (Study4.TW)Will Huang
 
開發人員不可不知的 Windows Container 容器技術預覽
開發人員不可不知的 Windows Container 容器技術預覽開發人員不可不知的 Windows Container 容器技術預覽
開發人員不可不知的 Windows Container 容器技術預覽Will Huang
 
Windows Container 101: dotNET, Container, Kubernetes
Windows Container 101: dotNET, Container, KubernetesWindows Container 101: dotNET, Container, Kubernetes
Windows Container 101: dotNET, Container, KubernetesWill Huang
 
使用 Visual Studio Code 建構 JavaScript 應用程式
使用 Visual Studio Code 建構 JavaScript 應用程式使用 Visual Studio Code 建構 JavaScript 應用程式
使用 Visual Studio Code 建構 JavaScript 應用程式Will Huang
 

Destacado (20)

TypeScript 綜合格鬥技
TypeScript 綜合格鬥技TypeScript 綜合格鬥技
TypeScript 綜合格鬥技
 
Visual Studio 2015 與 Git 開發實戰
Visual Studio 2015 與 Git 開發實戰Visual Studio 2015 與 Git 開發實戰
Visual Studio 2015 與 Git 開發實戰
 
你所不知道的 Microsoft Azure 雲端資源採購技巧 (2016 Azure 新春特惠方案)
你所不知道的 Microsoft Azure 雲端資源採購技巧 (2016 Azure 新春特惠方案)你所不知道的 Microsoft Azure 雲端資源採購技巧 (2016 Azure 新春特惠方案)
你所不知道的 Microsoft Azure 雲端資源採購技巧 (2016 Azure 新春特惠方案)
 
快速上手 Windows Containers 容器技術 (Docker Taipei)
快速上手 Windows Containers 容器技術 (Docker Taipei)快速上手 Windows Containers 容器技術 (Docker Taipei)
快速上手 Windows Containers 容器技術 (Docker Taipei)
 
SQL Server 資料庫版本控管
SQL Server 資料庫版本控管SQL Server 資料庫版本控管
SQL Server 資料庫版本控管
 
《保哥線上講堂》打造一個具有 Linux 溫度的 Windows 命令提示字元工具
《保哥線上講堂》打造一個具有 Linux 溫度的 Windows 命令提示字元工具《保哥線上講堂》打造一個具有 Linux 溫度的 Windows 命令提示字元工具
《保哥線上講堂》打造一個具有 Linux 溫度的 Windows 命令提示字元工具
 
簡介 Git hub 平台 ( 1.5 hrs )
簡介 Git hub 平台 ( 1.5 hrs )簡介 Git hub 平台 ( 1.5 hrs )
簡介 Git hub 平台 ( 1.5 hrs )
 
Azure Web App on Linux @ Global Azure Bootcamp 2017 Taiwan
Azure Web App on Linux @ Global Azure Bootcamp 2017 TaiwanAzure Web App on Linux @ Global Azure Bootcamp 2017 Taiwan
Azure Web App on Linux @ Global Azure Bootcamp 2017 Taiwan
 
簡介 GitHub 平台
簡介 GitHub 平台簡介 GitHub 平台
簡介 GitHub 平台
 
快快樂樂學會 Angular 2 網站開發框架 (Modern Web 2016)
快快樂樂學會 Angular 2 網站開發框架 (Modern Web 2016)快快樂樂學會 Angular 2 網站開發框架 (Modern Web 2016)
快快樂樂學會 Angular 2 網站開發框架 (Modern Web 2016)
 
Growth Mindset 經驗分享
Growth Mindset 經驗分享Growth Mindset 經驗分享
Growth Mindset 經驗分享
 
ASP.NET 5 的創新與變革
ASP.NET 5 的創新與變革ASP.NET 5 的創新與變革
ASP.NET 5 的創新與變革
 
中小企業選擇雲端服務的實戰密技
中小企業選擇雲端服務的實戰密技中小企業選擇雲端服務的實戰密技
中小企業選擇雲端服務的實戰密技
 
使用 Angular 2 與 Firebase 實現 Serverless 網站架構 (JSDC.tw 2016)
使用 Angular 2 與 Firebase 實現 Serverless 網站架構 (JSDC.tw 2016)使用 Angular 2 與 Firebase 實現 Serverless 網站架構 (JSDC.tw 2016)
使用 Angular 2 與 Firebase 實現 Serverless 網站架構 (JSDC.tw 2016)
 
git merge 與 rebase 的觀念與實務應用
git merge 與 rebase 的觀念與實務應用git merge 與 rebase 的觀念與實務應用
git merge 與 rebase 的觀念與實務應用
 
DEV305 - ASP.NET 5 開發攻略
DEV305 - ASP.NET 5 開發攻略DEV305 - ASP.NET 5 開發攻略
DEV305 - ASP.NET 5 開發攻略
 
Visual Studio 2017 新功能探索 (Study4.TW)
Visual Studio 2017 新功能探索 (Study4.TW)Visual Studio 2017 新功能探索 (Study4.TW)
Visual Studio 2017 新功能探索 (Study4.TW)
 
開發人員不可不知的 Windows Container 容器技術預覽
開發人員不可不知的 Windows Container 容器技術預覽開發人員不可不知的 Windows Container 容器技術預覽
開發人員不可不知的 Windows Container 容器技術預覽
 
Windows Container 101: dotNET, Container, Kubernetes
Windows Container 101: dotNET, Container, KubernetesWindows Container 101: dotNET, Container, Kubernetes
Windows Container 101: dotNET, Container, Kubernetes
 
使用 Visual Studio Code 建構 JavaScript 應用程式
使用 Visual Studio Code 建構 JavaScript 應用程式使用 Visual Studio Code 建構 JavaScript 應用程式
使用 Visual Studio Code 建構 JavaScript 應用程式
 

Similar a 初學者都該了解的 HTTP 通訊協定基礎

文件传输技术发展与产品趋势
文件传输技术发展与产品趋势文件传输技术发展与产品趋势
文件传输技术发展与产品趋势PMCamp
 
Share http2
Share   http2Share   http2
Share http2garyxu17
 
TCP/IP通訊協定
TCP/IP通訊協定TCP/IP通訊協定
TCP/IP通訊協定YC Nolan
 
20081128 http caching_in_php
20081128 http caching_in_php20081128 http caching_in_php
20081128 http caching_in_phpHunter Wu
 
Python HTTP
Python HTTPPython HTTP
Python HTTPYao Zuo
 
Web开发基础
Web开发基础Web开发基础
Web开发基础dynaturtle
 
Http in development
Http in developmentHttp in development
Http in development仲伟 李
 
Jetty服务器架构及调优.v2 2011-5
Jetty服务器架构及调优.v2 2011-5Jetty服务器架构及调优.v2 2011-5
Jetty服务器架构及调优.v2 2011-5lovingprince58
 
introduce Okhttp
introduce Okhttpintroduce Okhttp
introduce Okhttp朋 王
 
Ch01 簡介Web應用程式
Ch01 簡介Web應用程式Ch01 簡介Web應用程式
Ch01 簡介Web應用程式Justin Lin
 
Servlet & JSP 教學手冊第二版 - 第 1 章:簡介Web應用程式
Servlet & JSP 教學手冊第二版 - 第 1 章:簡介Web應用程式Servlet & JSP 教學手冊第二版 - 第 1 章:簡介Web應用程式
Servlet & JSP 教學手冊第二版 - 第 1 章:簡介Web應用程式Justin Lin
 
COSCUP 2010 - node.JS 於互動式網站之應用
COSCUP 2010 - node.JS 於互動式網站之應用COSCUP 2010 - node.JS 於互動式網站之應用
COSCUP 2010 - node.JS 於互動式網站之應用ericpi Bi
 
2015.07.15 新人報告(1)
2015.07.15 新人報告(1)2015.07.15 新人報告(1)
2015.07.15 新人報告(1)Chih-Wei Chuang
 
[圣思园][Java SE]Network
[圣思园][Java SE]Network[圣思园][Java SE]Network
[圣思园][Java SE]NetworkArBing Xie
 
RFC2616 HTTP/1.1 Reading Notes
RFC2616 HTTP/1.1 Reading NotesRFC2616 HTTP/1.1 Reading Notes
RFC2616 HTTP/1.1 Reading NotesGreen Wang
 
Rest与面向资源的web开发
Rest与面向资源的web开发Rest与面向资源的web开发
Rest与面向资源的web开发topgeek
 
Fieldbus intro
Fieldbus introFieldbus intro
Fieldbus introcri fan
 
《网页设计与制作》第一章:网页制作基础
《网页设计与制作》第一章:网页制作基础《网页设计与制作》第一章:网页制作基础
《网页设计与制作》第一章:网页制作基础greentask
 

Similar a 初學者都該了解的 HTTP 通訊協定基礎 (20)

文件传输技术发展与产品趋势
文件传输技术发展与产品趋势文件传输技术发展与产品趋势
文件传输技术发展与产品趋势
 
Share http2
Share   http2Share   http2
Share http2
 
TCP/IP通訊協定
TCP/IP通訊協定TCP/IP通訊協定
TCP/IP通訊協定
 
20081128 http caching_in_php
20081128 http caching_in_php20081128 http caching_in_php
20081128 http caching_in_php
 
Python HTTP
Python HTTPPython HTTP
Python HTTP
 
Web开发基础
Web开发基础Web开发基础
Web开发基础
 
Http in development
Http in developmentHttp in development
Http in development
 
Jetty服务器架构及调优.v2 2011-5
Jetty服务器架构及调优.v2 2011-5Jetty服务器架构及调优.v2 2011-5
Jetty服务器架构及调优.v2 2011-5
 
Web service
Web serviceWeb service
Web service
 
introduce Okhttp
introduce Okhttpintroduce Okhttp
introduce Okhttp
 
Ch01 簡介Web應用程式
Ch01 簡介Web應用程式Ch01 簡介Web應用程式
Ch01 簡介Web應用程式
 
Servlet & JSP 教學手冊第二版 - 第 1 章:簡介Web應用程式
Servlet & JSP 教學手冊第二版 - 第 1 章:簡介Web應用程式Servlet & JSP 教學手冊第二版 - 第 1 章:簡介Web應用程式
Servlet & JSP 教學手冊第二版 - 第 1 章:簡介Web應用程式
 
COSCUP 2010 - node.JS 於互動式網站之應用
COSCUP 2010 - node.JS 於互動式網站之應用COSCUP 2010 - node.JS 於互動式網站之應用
COSCUP 2010 - node.JS 於互動式網站之應用
 
2015.07.15 新人報告(1)
2015.07.15 新人報告(1)2015.07.15 新人報告(1)
2015.07.15 新人報告(1)
 
Rest
RestRest
Rest
 
[圣思园][Java SE]Network
[圣思园][Java SE]Network[圣思园][Java SE]Network
[圣思园][Java SE]Network
 
RFC2616 HTTP/1.1 Reading Notes
RFC2616 HTTP/1.1 Reading NotesRFC2616 HTTP/1.1 Reading Notes
RFC2616 HTTP/1.1 Reading Notes
 
Rest与面向资源的web开发
Rest与面向资源的web开发Rest与面向资源的web开发
Rest与面向资源的web开发
 
Fieldbus intro
Fieldbus introFieldbus intro
Fieldbus intro
 
《网页设计与制作》第一章:网页制作基础
《网页设计与制作》第一章:网页制作基础《网页设计与制作》第一章:网页制作基础
《网页设计与制作》第一章:网页制作基础
 

Más de Will Huang

深入理解 CVE-2022-24765 漏洞的攻擊與防護策略 (Git v2.35.2)
深入理解 CVE-2022-24765 漏洞的攻擊與防護策略 (Git v2.35.2)深入理解 CVE-2022-24765 漏洞的攻擊與防護策略 (Git v2.35.2)
深入理解 CVE-2022-24765 漏洞的攻擊與防護策略 (Git v2.35.2)Will Huang
 
從頭打造 C#、.NET 與 ASP.NET Core 開發環境
從頭打造 C#、.NET 與 ASP.NET Core 開發環境從頭打造 C#、.NET 與 ASP.NET Core 開發環境
從頭打造 C#、.NET 與 ASP.NET Core 開發環境Will Huang
 
ASP.NET Core 6.0 全新功能探索
ASP.NET Core 6.0 全新功能探索ASP.NET Core 6.0 全新功能探索
ASP.NET Core 6.0 全新功能探索Will Huang
 
使用 .NET 5 實現美股期貨的量化交易策略 (.NET Conf 2020)
使用 .NET 5 實現美股期貨的量化交易策略 (.NET Conf 2020)使用 .NET 5 實現美股期貨的量化交易策略 (.NET Conf 2020)
使用 .NET 5 實現美股期貨的量化交易策略 (.NET Conf 2020)Will Huang
 
實現 Angular, Docker 與 Kubernetes 持續部署 (NG+2020)
實現 Angular, Docker 與 Kubernetes 持續部署 (NG+2020)實現 Angular, Docker 與 Kubernetes 持續部署 (NG+2020)
實現 Angular, Docker 與 Kubernetes 持續部署 (NG+2020)Will Huang
 
Micro-frontends with Angular 10 (Modern Web 2020)
Micro-frontends with Angular 10 (Modern Web 2020)Micro-frontends with Angular 10 (Modern Web 2020)
Micro-frontends with Angular 10 (Modern Web 2020)Will Huang
 
從實戰經驗看到的 K8S 導入痛點
從實戰經驗看到的 K8S 導入痛點從實戰經驗看到的 K8S 導入痛點
從實戰經驗看到的 K8S 導入痛點Will Huang
 
RxJS 6 新手入門
RxJS 6 新手入門RxJS 6 新手入門
RxJS 6 新手入門Will Huang
 
极速 Angular 开发:效能调校技巧 (ngChina 2019)
极速 Angular 开发:效能调校技巧 (ngChina 2019)极速 Angular 开发:效能调校技巧 (ngChina 2019)
极速 Angular 开发:效能调校技巧 (ngChina 2019)Will Huang
 
你不可不知的 ASP.NET Core 3 全新功能探索 (.NET Conf 2019)
你不可不知的 ASP.NET Core 3 全新功能探索 (.NET Conf 2019)你不可不知的 ASP.NET Core 3 全新功能探索 (.NET Conf 2019)
你不可不知的 ASP.NET Core 3 全新功能探索 (.NET Conf 2019)Will Huang
 
Protractor: The Hacker way (NG-MY 2019)
Protractor: The Hacker way (NG-MY 2019)Protractor: The Hacker way (NG-MY 2019)
Protractor: The Hacker way (NG-MY 2019)Will Huang
 
邁向 Windows Server 應用程式現代化 (Windows Server Application Modernization)
邁向 Windows Server 應用程式現代化 (Windows Server Application Modernization)邁向 Windows Server 應用程式現代化 (Windows Server Application Modernization)
邁向 Windows Server 應用程式現代化 (Windows Server Application Modernization)Will Huang
 
Angular 开发技巧 (2018 ngChina 开发者大会)
Angular 开发技巧 (2018 ngChina 开发者大会)Angular 开发技巧 (2018 ngChina 开发者大会)
Angular 开发技巧 (2018 ngChina 开发者大会)Will Huang
 
Angular 7 全新功能探索 (Angular Taiwan 2018)
Angular 7 全新功能探索 (Angular Taiwan 2018)Angular 7 全新功能探索 (Angular Taiwan 2018)
Angular 7 全新功能探索 (Angular Taiwan 2018)Will Huang
 
利用.NET Core 與 Azure Kubernetes Service (AKS) 建立高彈性 Microservices (Azure TechDay)
利用.NET Core 與 Azure Kubernetes Service (AKS) 建立高彈性 Microservices (Azure TechDay)利用.NET Core 與 Azure Kubernetes Service (AKS) 建立高彈性 Microservices (Azure TechDay)
利用.NET Core 與 Azure Kubernetes Service (AKS) 建立高彈性 Microservices (Azure TechDay)Will Huang
 
AKS 與開發人員體驗 (Kubernetes 大講堂)
AKS 與開發人員體驗 (Kubernetes 大講堂)AKS 與開發人員體驗 (Kubernetes 大講堂)
AKS 與開發人員體驗 (Kubernetes 大講堂)Will Huang
 
使用 ASP.NET Blazor 開發 SPA 網頁應用程式 (.NET Conf 2018)
使用 ASP.NET Blazor 開發 SPA 網頁應用程式 (.NET Conf 2018)使用 ASP.NET Blazor 開發 SPA 網頁應用程式 (.NET Conf 2018)
使用 ASP.NET Blazor 開發 SPA 網頁應用程式 (.NET Conf 2018)Will Huang
 
全新 Windows Server 2019 容器技術 及邁向與 Kubernetes 整合之路 (Windows Server 高峰會)
全新 Windows Server 2019 容器技術及邁向與 Kubernetes 整合之路 (Windows Server 高峰會)全新 Windows Server 2019 容器技術及邁向與 Kubernetes 整合之路 (Windows Server 高峰會)
全新 Windows Server 2019 容器技術 及邁向與 Kubernetes 整合之路 (Windows Server 高峰會)Will Huang
 
使用 C#/Razor 開發互動式 WebAssembly 網站 (Modern Web 2018)
使用 C#/Razor 開發互動式 WebAssembly 網站 (Modern Web 2018)使用 C#/Razor 開發互動式 WebAssembly 網站 (Modern Web 2018)
使用 C#/Razor 開發互動式 WebAssembly 網站 (Modern Web 2018)Will Huang
 
以敏捷架構打造美國軟體外包專案的經驗談
以敏捷架構打造美國軟體外包專案的經驗談以敏捷架構打造美國軟體外包專案的經驗談
以敏捷架構打造美國軟體外包專案的經驗談Will Huang
 

Más de Will Huang (20)

深入理解 CVE-2022-24765 漏洞的攻擊與防護策略 (Git v2.35.2)
深入理解 CVE-2022-24765 漏洞的攻擊與防護策略 (Git v2.35.2)深入理解 CVE-2022-24765 漏洞的攻擊與防護策略 (Git v2.35.2)
深入理解 CVE-2022-24765 漏洞的攻擊與防護策略 (Git v2.35.2)
 
從頭打造 C#、.NET 與 ASP.NET Core 開發環境
從頭打造 C#、.NET 與 ASP.NET Core 開發環境從頭打造 C#、.NET 與 ASP.NET Core 開發環境
從頭打造 C#、.NET 與 ASP.NET Core 開發環境
 
ASP.NET Core 6.0 全新功能探索
ASP.NET Core 6.0 全新功能探索ASP.NET Core 6.0 全新功能探索
ASP.NET Core 6.0 全新功能探索
 
使用 .NET 5 實現美股期貨的量化交易策略 (.NET Conf 2020)
使用 .NET 5 實現美股期貨的量化交易策略 (.NET Conf 2020)使用 .NET 5 實現美股期貨的量化交易策略 (.NET Conf 2020)
使用 .NET 5 實現美股期貨的量化交易策略 (.NET Conf 2020)
 
實現 Angular, Docker 與 Kubernetes 持續部署 (NG+2020)
實現 Angular, Docker 與 Kubernetes 持續部署 (NG+2020)實現 Angular, Docker 與 Kubernetes 持續部署 (NG+2020)
實現 Angular, Docker 與 Kubernetes 持續部署 (NG+2020)
 
Micro-frontends with Angular 10 (Modern Web 2020)
Micro-frontends with Angular 10 (Modern Web 2020)Micro-frontends with Angular 10 (Modern Web 2020)
Micro-frontends with Angular 10 (Modern Web 2020)
 
從實戰經驗看到的 K8S 導入痛點
從實戰經驗看到的 K8S 導入痛點從實戰經驗看到的 K8S 導入痛點
從實戰經驗看到的 K8S 導入痛點
 
RxJS 6 新手入門
RxJS 6 新手入門RxJS 6 新手入門
RxJS 6 新手入門
 
极速 Angular 开发:效能调校技巧 (ngChina 2019)
极速 Angular 开发:效能调校技巧 (ngChina 2019)极速 Angular 开发:效能调校技巧 (ngChina 2019)
极速 Angular 开发:效能调校技巧 (ngChina 2019)
 
你不可不知的 ASP.NET Core 3 全新功能探索 (.NET Conf 2019)
你不可不知的 ASP.NET Core 3 全新功能探索 (.NET Conf 2019)你不可不知的 ASP.NET Core 3 全新功能探索 (.NET Conf 2019)
你不可不知的 ASP.NET Core 3 全新功能探索 (.NET Conf 2019)
 
Protractor: The Hacker way (NG-MY 2019)
Protractor: The Hacker way (NG-MY 2019)Protractor: The Hacker way (NG-MY 2019)
Protractor: The Hacker way (NG-MY 2019)
 
邁向 Windows Server 應用程式現代化 (Windows Server Application Modernization)
邁向 Windows Server 應用程式現代化 (Windows Server Application Modernization)邁向 Windows Server 應用程式現代化 (Windows Server Application Modernization)
邁向 Windows Server 應用程式現代化 (Windows Server Application Modernization)
 
Angular 开发技巧 (2018 ngChina 开发者大会)
Angular 开发技巧 (2018 ngChina 开发者大会)Angular 开发技巧 (2018 ngChina 开发者大会)
Angular 开发技巧 (2018 ngChina 开发者大会)
 
Angular 7 全新功能探索 (Angular Taiwan 2018)
Angular 7 全新功能探索 (Angular Taiwan 2018)Angular 7 全新功能探索 (Angular Taiwan 2018)
Angular 7 全新功能探索 (Angular Taiwan 2018)
 
利用.NET Core 與 Azure Kubernetes Service (AKS) 建立高彈性 Microservices (Azure TechDay)
利用.NET Core 與 Azure Kubernetes Service (AKS) 建立高彈性 Microservices (Azure TechDay)利用.NET Core 與 Azure Kubernetes Service (AKS) 建立高彈性 Microservices (Azure TechDay)
利用.NET Core 與 Azure Kubernetes Service (AKS) 建立高彈性 Microservices (Azure TechDay)
 
AKS 與開發人員體驗 (Kubernetes 大講堂)
AKS 與開發人員體驗 (Kubernetes 大講堂)AKS 與開發人員體驗 (Kubernetes 大講堂)
AKS 與開發人員體驗 (Kubernetes 大講堂)
 
使用 ASP.NET Blazor 開發 SPA 網頁應用程式 (.NET Conf 2018)
使用 ASP.NET Blazor 開發 SPA 網頁應用程式 (.NET Conf 2018)使用 ASP.NET Blazor 開發 SPA 網頁應用程式 (.NET Conf 2018)
使用 ASP.NET Blazor 開發 SPA 網頁應用程式 (.NET Conf 2018)
 
全新 Windows Server 2019 容器技術 及邁向與 Kubernetes 整合之路 (Windows Server 高峰會)
全新 Windows Server 2019 容器技術及邁向與 Kubernetes 整合之路 (Windows Server 高峰會)全新 Windows Server 2019 容器技術及邁向與 Kubernetes 整合之路 (Windows Server 高峰會)
全新 Windows Server 2019 容器技術 及邁向與 Kubernetes 整合之路 (Windows Server 高峰會)
 
使用 C#/Razor 開發互動式 WebAssembly 網站 (Modern Web 2018)
使用 C#/Razor 開發互動式 WebAssembly 網站 (Modern Web 2018)使用 C#/Razor 開發互動式 WebAssembly 網站 (Modern Web 2018)
使用 C#/Razor 開發互動式 WebAssembly 網站 (Modern Web 2018)
 
以敏捷架構打造美國軟體外包專案的經驗談
以敏捷架構打造美國軟體外包專案的經驗談以敏捷架構打造美國軟體外包專案的經驗談
以敏捷架構打造美國軟體外包專案的經驗談
 

初學者都該了解的 HTTP 通訊協定基礎

  • 1. 初學者都該了解的 HTTP 通訊協定基礎 Hypertext Transfer Protocol 多奇數位創意有限公司 技術總監 黃保翕 ( Will 保哥 ) 部落格:http://blog.miniasp.com/
  • 2. 超文本傳輸協定 ( HTTP ) Hypertext Transfer Protocol
  • 3. 目前 HTTP 通訊協定的版本 • HTTP/0.9 – 於 1991 年發表 (已廢止) • HTTP/1.0 – 於 1996 年 5 月發表( RFC 1945 ) • HTTP/1.1 – 於 1997 年 1 月發表( RFC 2068 ) – 於 1999 年 6 月發布 HTTP/1.1 更新版 ( RFC 2616 ) – 於 2014 年 6 月再次更新 HTTP/1.1 並將規格文件拆成六份 • HTTP/2 (Wikipedia) – 於 2015 年 5 月發布 ( RFC 7540 ) (瀏覽器相容性) – 僅針對 HTTP/1.1 的 Message Syntax 部分做出強化 3
  • 4. HTTP/0.9 • 於 1990 年由 Tim Berners-Lee 提出最初的 HTTP 建議 ( WWW ) • 實作重點 – 用戶端要求是以 ASCII 字元為主 ( 單行命令即可發出要求  GET / ) – 用戶端要求會以一個 換行字元 (CRLF) 來結束 – 伺服器回應是以 ASCII 字元為主,回應內容為是 HTML 文件 – 每次執行完 Request / Response 就會自動關閉連線 • 主要特點 – Client / Server 架構、Request / Response 協定 – 跑在 TCP/IP 上的 ASCII 協定 (要求/回應) – 被設計用來傳輸 HTML 文件 – 每完成一次 ASCII 協定就會自動關閉連線 4
  • 5. 5 $ telnet google.com 80 Trying 172.217.24.14... Connected to google.com. Escape character is '^]'. GET /about HTTP/1.0 301 Moved Permanently Location: http://www.google.com/about/ Content-Type: text/html; charset=UTF-8 X-Content-Type-Options: nosniff Date: Sat, 17 Jun 2017 03:23:44 GMT Expires: Mon, 17 Jul 2017 03:23:44 GMT Server: sffe Content-Length: 225 X-XSS-Protection: 1; mode=block Cache-Control: public, max-age=2592000 Age: 252414 <HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8"> <TITLE>301 Moved</TITLE></HEAD><BODY> <H1>301 Moved</H1> The document has moved <A HREF="http://www.google.com/about/">here</A>. </BODY></HTML> Connection closed by foreign host.
  • 6. HTTP/1.0 • 在 1991 到 1995 年之間,所謂 瀏覽器 騰空出世! • 於 1996 年 5 月發表 HTTP/1.0 版 ( RFC 1945 ) • 與 HTTP/0.9 不同的部分 – 用戶端要求是以 ASCII 字元為主,但可發送多行命令 (含要求標頭) • 先送出要求方法,再送出要求標題,最後以一個 額外的換行字元 結束 – 伺服器回應是以 ASCII 字元為主,回應內容會區分 • 狀態列 • 回應標頭 • 回應內文主體 ( 不僅僅是 HTML 文件,可以是更多內容類型 ) – 每完成一次 Request / Response 交握就會自動關閉 TCP/IP 連線 6
  • 7. 7 $ telnet google.com 80 Trying 172.217.24.14... Connected to google.com. Escape character is '^]'. GET /about HTTP/1.0 HTTP/1.0 301 Moved Permanently Location: http://www.google.com/about/ Content-Type: text/html; charset=UTF-8 X-Content-Type-Options: nosniff Date: Sat, 17 Jun 2017 03:23:44 GMT Expires: Mon, 17 Jul 2017 03:23:44 GMT Server: sffe Content-Length: 225 X-XSS-Protection: 1; mode=block Cache-Control: public, max-age=2592000 Age: 252414 <HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8"> <TITLE>301 Moved</TITLE></HEAD><BODY> <H1>301 Moved</H1> The document has moved <A HREF="http://www.google.com/about/">here</A>. </BODY></HTML> Connection closed by foreign host.
  • 8. HTTP/1.1 • 於 1997 年 1 月發表 HTTP/1.1 版 ( RFC 1945 ) • 於 1999 年 6 月發布 HTTP/1.1 更新版 ( RFC 2616 ) • 與 HTTP/1.0 不同的部分 – 傳輸協議的效能改進 ( 新增不少 HTTP 標頭定義 ) • 持續連線狀態 ( persistent connection ) ( MDN ) • 切塊編碼傳輸 ( chunked encoding transfer ) ( MDN ) • 位元範圍請求 ( byte range request ) ( MDN ) • 額外快取機制 ( cache control ) • 請求管線作業 ( request pipelining ) ( 需搭配持續連接狀態特性才能用 ) 8
  • 9. 9 $ telnet www.miniasp.com 80 Trying 172.217.24.14... Connected to google.com. Escape character is '^]'. GET / HTTP/1.1 Host: www.miniasp.com Connection: close Range: bytes=0-20 HTTP/1.1 206 Partial Content Content-Length: 21 Content-Type: text/html Content-Range: bytes 0-20/21540 Last-Modified: Tue, 11 Aug 2015 09:45:01 GMT Accept-Ranges: bytes ETag: "d1309b641ad4d01:0" Server: Microsoft-IIS/8.0 X-Powered-By: ASP.NET Set-Cookie: ARRAffinity=de668c30a13e01616d34fb3773ed38c1363f5c626ca6001081524d8948435956;Path =/;Domain=www.miniasp.com Date: Tue, 20 Jun 2017 06:23:12 GMT Connection: close <!DOCTYPE html> <htmConnection closed by foreign host.
  • 10. 目前 HTTP/1.1 的六大規格 • RFC 7230 HTTP/1.1: Message Syntax and Routing • RFC 7231 HTTP/1.1: Semantics and Content (最重要) • RFC 7232 HTTP/1.1: Conditional Requests • RFC 7233 HTTP/1.1: Range Requests • RFC 7234 HTTP/1.1: Caching • RFC 7235 HTTP/1.1: Authentication 10
  • 11. 關於 HTTP 通訊協定的基本常識 • The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. – 無狀態特性 ( stateless ) – 分散式架構 ( distributed ) – 協作的架構 ( collaborative ) – 超本文 ( hypertext = not just "text" but with "links" ) 11
  • 12. 初學者應了解 HTTP 的基本運作方式 • 如何發出 HTTP 要求 (HTTP Request) – 要求方法 ( Request Methods ) • GET, POST, DELETE, PUT, PATCH, … – 要求標頭 ( Request Headers ) • Connection, Content-Type, Accept-Language, … – 斷行符號 ( CRLF ) – 要求內容主體 ( Request Body ) • 如何回應 HTTP 訊息 (HTTP Response) – 回應狀態碼 ( Response Status Codes ) • HTTP/1.1 200 OK – 回應標頭 ( Response Headers ) – 斷行符號 ( CRLF ) – 回應內容主體 ( Response Body) 12
  • 13. 相關連結 • 必備工具 – Postman – Fiddler free web debugging proxy • 推薦書籍 – 高效能網站開發指南 – 高效能網站建置指南 – Web 效能優化日誌 Volume 2 • 報名課程 – 2017/07/01 (六) 《台北》ASP.NET Web API 2 開發實戰 – 2017/07/16 (日)《高雄》ASP.NET Web API 2 開發實戰 13
  • 14. 聯絡資訊 • The Will Will Web 記載著 Will 在網路世界的學習心得與技術分享 – http://blog.miniasp.com/ • Will 保哥的技術交流中心 (臉書粉絲專頁) – http://www.facebook.com/will.fans • Will 保哥的噗浪 – http://www.plurk.com/willh/invite • Will 保哥的推特 – https://twitter.com/Will_Huang