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
680
Version Control System - Git
eggegg
4
700
Introduction to Ruby
eggegg
3
640
Defly
eggegg
0
380
Other Decks in Programming
See All in Programming
Vite+ Unified Toolchain for the Web
naokihaba
0
340
メソッドのジェネリクスでGoの夢は広がるか? / Kyoto.go #65
utgwkk
3
940
コンテキストの使い捨てをやめる — ビジネスルール駆動開発と miko —
ioki
0
230
気づいたらRubyで100作品 ー クリエイティブコーディングが生活の一部になるまで / 100 Ruby Sketches Later: How Creative Coding Became Part of My Life
chobishiba
3
610
The NotImplementedError Problem in Ruby
koic
1
930
Spec Driven Development | AI Summit Lisbon
danielsogl
PRO
0
210
jQueryをバージョンアップする前に使いたいjQuery Migrate
matsuo_atsushi
0
590
Make SRE Operations Easier with Azure SRE Agent
kkamegawa
0
8k
並列実装の現場、2ヶ月間実務でAIを使い倒したAIもPCも私も限界が近い
ming_ayami
0
130
Creating Composable Callables in Contemporary C++
rollbear
0
170
Even G2とAWSで推しのエージェントを召喚しよう!
har1101
1
120
LLM本来の能力を解き放つサンドボックス技術とAI民主化への適用
yukukotani
3
4.5k
Featured
See All Featured
Information Architects: The Missing Link in Design Systems
soysaucechin
0
980
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
190
A designer walks into a library…
pauljervisheath
211
24k
Paper Plane
katiecoart
PRO
1
52k
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
490
Ethics towards AI in product and experience design
skipperchong
2
310
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.5k
Discover your Explorer Soul
emna__ayadi
2
1.1k
Are puppies a ranking factor?
jonoalderson
1
3.6k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
200
Everyday Curiosity
cassininazir
0
240
Claude Code のすすめ
schroneko
67
230k
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