Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
HTTP
Search
Andrew Liu
March 28, 2012
Programming
1.5k
17
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
HTTP
2012 CCSP
Andrew Liu
March 28, 2012
More Decks by Andrew Liu
See All by Andrew Liu
Facebook Graph API
eggegg
7
690
Version Control System - Git
eggegg
4
710
Introduction to Ruby
eggegg
3
650
Defly
eggegg
0
390
Other Decks in Programming
See All in Programming
Kiroで創り、AgentCoreで繋ぐ!AWSで実践する「AI-DLC」から「AIエージェント統合」までの最新地図
licux
2
260
Seeing Through Serverless: Observability for AWS Lambda with ADOT and CloudWatch Application Signals
seike460
PRO
1
110
「AI時代、配布するPythonコードをどう守るか: 難読化の実験と判断軸」 #PyconJP2026
pkshadeck
PRO
2
140
ALB ログから Trace を気合で繋げる技術
fohte
7
860
AIは賢い。でも実行環境は? CLIおじさんがAI時代に伝えたいこと ~ CLIおじさんがAI時代に伝えたいこと ~
curekoshimizu
1
140
go-spidermonkeyでAIエージェントのCode Modeを実装する
syumai
3
1.5k
Hono + Inertia + React で LP を構築した話
oukayuka
2
200
異なる設計思想のフレームワークを経験して得た学び
amekuhideki
2
1.5k
30年振りにコンパイラの定数整数除算を改善した
herumi
9
4.4k
【デモ】Kiroで体験する仕様駆動開発|設計からコーディングまでAIと進める開発フロー
cmkudo
0
560
PyO3 で既存 Python 評価器を Rust core 化する ー wasm-bindgen でブラウザにも配るための設計
kdash
1
350
Hello, Hiroshima Geospatial Data! — Exploring DoboX with Python
ra0kley
0
160
Featured
See All Featured
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
490
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
First, design no harm
axbom
PRO
2
1.3k
KATA
mclloyd
PRO
35
15k
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
490
GraphQLとの向き合い方2022年版
quramy
50
15k
The World Runs on Bad Software
bkeepers
PRO
72
12k
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
450
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
3
1.2k
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
370
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
410
Transcript
HTTP Andrew Liu
Hypertext Transfer Protocol
Hypertext Transfer Protocol <a href=”https://www.facebook.com/mikechencom”>Prof. Mike</a>
URL - Uniform Resource Locator https://www.facebook.com/prof.mike.chen
URL - Uniform Resource Locator https://www.facebook.com/prof.mike.chen scheme name http https
spdy
URL - Uniform Resource Locator https://www.facebook.com/prof.mike.chen scheme name http https
spdy authority
URL - Uniform Resource Locator https://www.facebook.com/prof.mike.chen scheme name http https
spdy authority path
Mike
Mike Hi Mike, How are you?
Mike Hi Mike, How are you? #@!@#!#$#@$
Mike
Mike Hi Mike, How are you?
Mike Hi Mike, How are you? Fine
Mike Hi Mike, How are you? Fine english://mike/status
www.facebook.com https://www.facebook.com/prof.mike.chen
www.facebook.com GET /prof.mike.chen HTTP/1.1 https://www.facebook.com/prof.mike.chen
www.facebook.com GET /prof.mike.chen HTTP/1.1 <html>.... https://www.facebook.com/prof.mike.chen
Real case: request GET / HTTP/1.1 Host: www.facebook.com Connection: keep-alive
Cache-Control: max-age=0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.83 Safari/535.11 Accept: text/html,application/xhtml+xml,application/ xml;q=0.9,*/*;q=0.8 Accept-Encoding: gzip,deflate,sdch Accept-Language: zh-TW,zh;q=0.8,en-US;q=0.6,en;q=0.4 Accept-Charset: UTF-8,*;q=0.5 Cookie: ....
www.facebook.com GET / HTTP/1.1 <html>.... https://www.facebook.com/
www.facebook.com GET / HTTP/1.1 <html>.... https://www.facebook.com/ How does it know
I have logged in?
HTTP is Stateless Server doesn’t know what the user did
last time.
www.facebook.com
www.facebook.com Hi, I’m Mike.
www.facebook.com Hi, I’m Mike. Ok, you’re Mike.
www.facebook.com Hi, I’m Mike. Ok, you’re Mike. Everyone can be
Mike now!
www.facebook.com
www.facebook.com Hi, I’m Mike. My password is “lab430”.
www.facebook.com Hi, I’m Mike. My password is “lab430”. Ok, you’re
Mike. Code: a3ad31
www.facebook.com Hi, I’m Mike. My password is “lab430”. Ok, you’re
Mike. Code: a3ad31 My code is a3ad31.
www.facebook.com Hi, I’m Mike. My password is “lab430”. Ok, you’re
Mike. Code: a3ad31 My code is a3ad31. Ok, you’re Mike.
www.facebook.com Hi, I’m Mike. My password is “lab430”. Ok, you’re
Mike. Code: a3ad31 Browser must remember the code! My code is a3ad31. Ok, you’re Mike.
Cookie to Rescue
Cookie to Rescue Key - value pair storage
Cookie to Rescue Key - value pair storage Sent every
time in HTTP request header Cookie: km_dbg=0; heroku_session_v=1; ...
Real case: response HTTP/1.1 200 OK Cache-Control: private, no-cache, no-store,
must-revalidate Expires: Sat, 01 Jan 2000 00:00:00 GMT Pragma: no-cache X-Content-Type-Options: nosniff X-Frame-Options: DENY Set-Cookie: _e_1V7k_5=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; path=/; domain=.facebook.com; httponly Set-Cookie: L=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; path=/; domain=.facebook.com; httponly Set-Cookie: wd=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; path=/; domain=.facebook.com; httponly Content-Encoding: gzip Content-Type: text/html; charset=utf-8 X-FB-Debug: XKkfgkQmkDwO4VsOafKYEhfDbYk9WN8ANLHRCrl/9eU= X-Cnection: close Transfer-Encoding: chunked Date: Tue, 27 Mar 2012 13:16:47 GMT
HTTP Status Code
HTTP Status Code 2XX Success 200 OK
HTTP Status Code 2XX Success 200 OK 3XX Redirection 301
Move Permanently 302 Found (a.k.a. Moved Temporarily) 304 Not Modified
HTTP Status Code 2XX Success 200 OK 3XX Redirection 301
Move Permanently 302 Found (a.k.a. Moved Temporarily) 304 Not Modified 4XX Client Error 400 Bad Request 401 Unauthorized 403 Forbidden 404 Not Found
HTTP Status Code 2XX Success 200 OK 3XX Redirection 301
Move Permanently 302 Found (a.k.a. Moved Temporarily) 304 Not Modified 4XX Client Error 400 Bad Request 401 Unauthorized 403 Forbidden 404 Not Found 5XX Server Error 500 Internal Server Error
Advanced Topics
mikechen.com
mikechen.com http://mikechen.com/
mikechen.com GET / HTTP/1.1 http://mikechen.com/
mikechen.com GET / HTTP/1.1 <html>... http://mikechen.com/
mikechen.com GET / HTTP/1.1 <html>... http://mikechen.com/
mikechen.com
mikechen.com http://mikechen.com/
mikechen.com Modified? http://mikechen.com/
mikechen.com Modified? No! http://mikechen.com/
mikechen.com Modified? No! http://mikechen.com/
HTTP Request Header
HTTP Request Header Host Host: www.apple.com
HTTP Request Header Host User-Agent Host: www.apple.com User-Agent: Mozilla/5.0 (Windows;
U; Windows NT 6.1; en-US; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5 (.NET CLR 3.5.30729)
HTTP Request Header Host User-Agent Accept-Language Host: www.apple.com User-Agent: Mozilla/5.0
(Windows; U; Windows NT 6.1; en-US; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5 (.NET CLR 3.5.30729) Accept-Language: en-us,en;q=0.5
HTTP Request Header Host User-Agent Accept-Language Accept-Encoding Host: www.apple.com User-Agent:
Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5 (.NET CLR 3.5.30729) Accept-Language: en-us,en;q=0.5 Accept-Encoding: gzip,deflate
HTTP Request Header Host User-Agent Accept-Language Accept-Encoding If-Modified-Since Host: www.apple.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5 (.NET CLR 3.5.30729) Accept-Language: en-us,en;q=0.5 Accept-Encoding: gzip,deflate If-Modified-Since: Sat, 28 Nov 2009 06:38:19 GMT
HTTP Request Header Host User-Agent Accept-Language Accept-Encoding If-Modified-Since Referer Host:
www.apple.com User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5 (.NET CLR 3.5.30729) Accept-Language: en-us,en;q=0.5 Accept-Encoding: gzip,deflate If-Modified-Since: Sat, 28 Nov 2009 06:38:19 GMT Referer: www.google.com
HTTP Response Header
HTTP Response Header Cache-Control Cache-Control: max-age=3600, public
HTTP Response Header Cache-Control Content-Encoding Cache-Control: max-age=3600, public Content-Encoding: gzip
HTTP Response Header Cache-Control Content-Encoding Content-Type Cache-Control: max-age=3600, public Content-Encoding:
gzip Content-Type: text/html; charset=UTF-8
HTTP Response Header Cache-Control Content-Encoding Content-Type Content-Disposition Cache-Control: max-age=3600, public
Content-Encoding: gzip Content-Type: text/html; charset=UTF-8 Content-Disposition: attachment; filename=”ccsp.pdf”
HTTP Response Header Cache-Control Content-Encoding Content-Type Content-Disposition Content-Length Cache-Control: max-age=3600,
public Content-Encoding: gzip Content-Type: text/html; charset=UTF-8 Content-Disposition: attachment; filename=”ccsp.pdf” Content-Length: 79324
HTTP Response Header Cache-Control Content-Encoding Content-Type Content-Disposition Content-Length Location Cache-Control:
max-age=3600, public Content-Encoding: gzip Content-Type: text/html; charset=UTF-8 Content-Disposition: attachment; filename=”ccsp.pdf” Content-Length: 79324 Location: http://ntumobile.org
HTTP Verbs
HTTP Verbs GET GET /books read
HTTP Verbs GET POST GET /books read POST /books create
HTTP Verbs GET POST PUT GET /books read POST /books
create PUT /books/hunger-game update
HTTP Verbs GET POST PUT DELETE GET /books read POST
/books create PUT /books/hunger-game update DELETE /books/hunger-game delete
None
None
<form method=”get” action=”/search”> <input type=”text” name=”q”> </form> or
<form method=”get” action=”/search”> <input type=”text” name=”q”> </form> or GET /search?q=mike+chen
HTTP/1.1 Host: www.google.com.tw User-Agent: Mozilla/4.0
{ :q => “mike chen” } <form method=”get” action=”/search”> <input
type=”text” name=”q”> </form> or GET /search?q=mike+chen HTTP/1.1 Host: www.google.com.tw User-Agent: Mozilla/4.0
None
<form method=”post” action=”/login”> <input type=”text” name=”user”> <input type=”password” name=”password”> <input
type=”submit” value=”Submit”> </form>
<form method=”post” action=”/login”> <input type=”text” name=”user”> <input type=”password” name=”password”> <input
type=”submit” value=”Submit”> </form> POST /login HTTP/1.1 Host: ccsp2012.org User-Agent: Mozilla/4.0 Content-Length: 25 Content-Type: application/x-www-form-urlencoded user=mike&password=lab430
END