Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
HTTP
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
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
700
Version Control System - Git
eggegg
4
720
Introduction to Ruby
eggegg
3
660
Defly
eggegg
0
390
Other Decks in Programming
See All in Programming
dotNET_vulnclicker_intro.pdf
deka_morita
0
140
RAG の “R” を Swift で覗いてみる 〜「意味から探す」検索の仕組み〜
nao_randd
0
160
Jetpack Compose Mechanisms
skydoves
3
820
Simple Storage Service(S3) is not simple
iwatsukayura
0
290
すこし踏み込む CancellationToken
htkym
2
1.7k
設計次第でAIコードの読む量は減らせる / designing-for-code-reading
minodriven
35
17k
コードで差別化できない時代の ソフトウェアエンジニアリング / Software Engineering in an Era Where Code Doesn’t Differentiate
kishida
2
180
コーディング自動化の次へ。人の介入をゼロにするファクトリーとサポートAIによる実践
timakin
4
3.5k
全ての永続トークンを、生まれる前に消し去りたい!
sylph01
2
880
ハーネス設計入門 〜 基礎知識の整理から実務へのステップアップ 〜
kinopeee
28
32k
半永久的に提供し続けられるプライベートクラウドを目指して ― 利用者の認知負荷を抑えるAPI抽象化とハードウェア世代交代の基盤設計
tomokon
0
500
AWS CDKのカスタムリソースでContinuum(旧Security Agent)を実装した話 | Implementing Continuum (formerly Security Agent) via AWS CDK Custom Resource
akihisaikeda
2
150
Featured
See All Featured
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
220
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
600
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.9k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.4k
Ten Tips & Tricks for a 🌱 transition
stuffmc
1
270
WCS-LA-2024
lcolladotor
0
890
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
600
Designing Experiences People Love
moore
143
24k
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
2
2.2k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
1
570
Deep Space Network (abreviated)
tonyrice
0
370
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
540
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