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
Parlez-Vous HTTP?
Search
Frederic Jean
March 14, 2012
Technology
2
140
Parlez-Vous HTTP?
Introduction to the HTTP protocol, complete with HTTP Status Cats
Frederic Jean
March 14, 2012
Tweet
Share
More Decks by Frederic Jean
See All by Frederic Jean
CleanShaved: See the Mustache Disappear
fredjean
0
150
Parlez-Vous HTTP? (Abbreviated)
fredjean
4
120
Other Decks in Technology
See All in Technology
ソフトウェアエンジニアの生成AI活用と、これから
lycorptech_jp
PRO
0
570
RDS の負荷が高い場合に AWS で取りうる具体策 N 連発/a-series-of-specific-countermeasures-available-on-aws-when-rds-is-under-high-load
emiki
7
4.3k
Click A, Buy B: Rethinking Conversion Attribution in ECommerce Recommendations
lycorptech_jp
PRO
0
110
HR Force における DWH の併用事例 ~ サービス基盤としての BigQuery / 分析基盤としての Snowflake ~@Cross Data Platforms Meetup #2「BigQueryと愉快な仲間たち」
ryo_suzuki
0
240
初めてのDatabricks Apps開発
taka_aki
1
200
AWSでAgentic AIを開発するための前提知識の整理
nasuvitz
2
220
速習AGENTS.md:5分で精度を上げる "3ブロック" テンプレ
ismk
6
1.8k
dbtとBigQuery MLで実現する リクルートの営業支援基盤のモデル開発と保守運用
recruitengineers
PRO
3
140
Building a cloud native business on open source
lizrice
0
110
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
12
81k
[2025年10月版] Databricks Data + AI Boot Camp
databricksjapan
1
140
プレーリーカードを活用しよう❗❗デジタル名刺交換からはじまるイベント会場交流のススメ
tsukaman
0
190
Featured
See All Featured
GraphQLとの向き合い方2022年版
quramy
49
14k
Imperfection Machines: The Place of Print at Facebook
scottboms
269
13k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3.1k
Java REST API Framework Comparison - PWX 2021
mraible
34
8.9k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
30
2.9k
Context Engineering - Making Every Token Count
addyosmani
7
270
We Have a Design System, Now What?
morganepeng
53
7.8k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.2k
Rebuilding a faster, lazier Slack
samanthasiow
84
9.2k
Code Reviewing Like a Champion
maltzj
526
40k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
48
9.7k
How GitHub (no longer) Works
holman
315
140k
Transcript
Parlez-Vous HTTP? Frédéric Jean Principal Software Engineer Snugg Home LLC
1 Wednesday, March 14, 12
Why talk about HTTP? 2 Wednesday, March 14, 12
A brief history... 3 Wednesday, March 14, 12
1989-1990: Initial WWW prototype developed on NeXT workstation 4 Wednesday,
March 14, 12
5 Wednesday, March 14, 12
1991: HTTP/0.9 released 6 Wednesday, March 14, 12
1996: HTTP/1.0 released as RFC 1945 7 Wednesday, March 14,
12
1996: HTTP/1.1 draft introduced 8 Wednesday, March 14, 12
1997: HTTP/1.1 released as RFC 2068 9 Wednesday, March 14,
12
1999: RFC 2616 Updates and improves HTTP/1.1 10 Wednesday, March
14, 12
What is HTTP? 11 Wednesday, March 14, 12
12 Wednesday, March 14, 12
12 Wednesday, March 14, 12
12 Wednesday, March 14, 12
12 Wednesday, March 14, 12
12 Wednesday, March 14, 12
12 Wednesday, March 14, 12
HTTP Is... 13 Wednesday, March 14, 12
Stateless HTTP Is... 13 Wednesday, March 14, 12
Stateless Insecure HTTP Is... 13 Wednesday, March 14, 12
Stateless Insecure Textual HTTP Is... 13 Wednesday, March 14, 12
<Initial line> <Headers> <Body> Message Format 14 Wednesday, March 14,
12
15 Wednesday, March 14, 12
15 Wednesday, March 14, 12
Request GET / HTTP/1.1 Host: boulderjug.org User-‐Agent: Mozilla/5.0 (Macintosh; Intel
Mac OS X 10.7; rv:8.0.1) Gecko/ 20100101 Firefox/8.0.1 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-‐Language: en-‐us,en;q=0.5 Accept-‐Encoding: gzip, deflate Accept-‐Charset: ISO-‐8859-‐1,utf-‐8;q=0.7,*;q=0.7 Cookie: __utma=1.709566692.1315366607.1322835520.1325736840.8; __utmz=1.1325736840.8.8.utmcsr=typepad.com|utmccn=(referral)| utmcmd=referral|utmcct=/site/blogs/6a010536bb2e9f970b010536bb2ea2970b/ posts; __qca=P0-‐138304784-‐1315366608389; __utmc=1 !" 16 Wednesday, March 14, 12
Request Initial Line 17 Wednesday, March 14, 12
GET / HTTP/1.1 18 Wednesday, March 14, 12
GET / HTTP/1.1 19 Wednesday, March 14, 12
HTTP Request Methods Method Safe Idempotent GET X X POST
PUT X DELETE X HEAD X X OPTIONS X X CONNECT PATCH TRACE X X 20 Wednesday, March 14, 12
GET / HTTP/1.1 21 Wednesday, March 14, 12
GET / HTTP/1.1 22 Wednesday, March 14, 12
Request Headers 23 Wednesday, March 14, 12
Host: boulderjug.org 24 Wednesday, March 14, 12
User-‐Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:8.0.1)... 25
Wednesday, March 14, 12
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-‐Language: en-‐us,en;q=0.5 Accept-‐Encoding: gzip, deflate Accept-‐Charset: ISO-‐8859-‐1,utf-‐8;q=0.7,*;q=0.7 26
Wednesday, March 14, 12
Cookie: __utma=1.709566692.1315366607.1322835520.1325736840.8;
__qca=P0-‐138304784-‐1315366608389; __utmc=1 27 Wednesday, March 14, 12
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ== 28 Wednesday, March 14, 12
Request Body PUT, POST, PATCH should have a body GET,
HEAD, OPTIONS, TRACE, CONNECT should not 29 Wednesday, March 14, 12
Request GET / HTTP/1.1 Host: boulderjug.org User-‐Agent: Mozilla/5.0 (Macintosh; Intel
Mac OS X 10.7; rv:8.0.1) Gecko/ 20100101 Firefox/8.0.1 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-‐Language: en-‐us,en;q=0.5 Accept-‐Encoding: gzip, deflate Accept-‐Charset: ISO-‐8859-‐1,utf-‐8;q=0.7,*;q=0.7 Cookie: __utma=1.709566692.1315366607.1322835520.1325736840.8; __utmz=1.1325736840.8.8.utmcsr=typepad.com|utmccn=(referral)| utmcmd=referral|utmcct=/site/blogs/6a010536bb2e9f970b010536bb2ea2970b/ posts; __qca=P0-‐138304784-‐1315366608389; __utmc=1 !" 30 Wednesday, March 14, 12
31 Wednesday, March 14, 12
31 Wednesday, March 14, 12
Response HTTP/1.1 200 OK Server: Apache X-‐PhApp: oak-‐tp-‐web026 X-‐Webserver: oak-‐tp-‐web026
Vary: cookie,Accept-‐Encoding Content-‐Encoding: gzip Keep-‐Alive: timeout=300, max=100 Content-‐Type: text/html; charset=utf-‐8 Content-‐Length: 12033 Date: Fri, 06 Jan 2012 05:48:59 GMT X-‐Varnish: 3423770493 Age: 0 Via: 1.1 varnish <!DOCTYPE html PUBLIC "-‐//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-‐transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" id="typepad-‐standard" xmlns:fb="http://www.facebook.com/2008/fbml"> ... </html> 32 Wednesday, March 14, 12
Response Initial Line 33 Wednesday, March 14, 12
aka: Status Line 34 Wednesday, March 14, 12
HTTP/1.1 200 OK 35 Wednesday, March 14, 12
HTTP/1.1 200 OK 36 Wednesday, March 14, 12
HTTP/1.1 200 OK 37 Wednesday, March 14, 12
HTTP/1.1 200 OK 38 Wednesday, March 14, 12
39 Wednesday, March 14, 12
40 Wednesday, March 14, 12
41 Wednesday, March 14, 12
HTTP/1.1 202 Accepted Location: http://example.com/asynch/jobs/3332334 42 Wednesday, March 14, 12
43 Wednesday, March 14, 12
HTTP/1.1 301 Moved Permanently Location: http://example.com/new_path 44 Wednesday, March 14,
12
302 Found 45 Wednesday, March 14, 12
HTTP/1.1 302 Found Location: http://example.com/new_path 46 Wednesday, March 14, 12
47 Wednesday, March 14, 12
HTTP/1.1 307 Temporary Redirect Location: http://example.com/maintenance.html 48 Wednesday, March 14,
12
49 Wednesday, March 14, 12
50 Wednesday, March 14, 12
HTTP/1.1 401 Authorization Required Server: HTTPd/1.0 Date: Sat, 27 Nov
2004 10:18:15 GMT WWW-Authenticate: Basic realm="Secure Area" Content-Type: text/html Content-Length: 311 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/1999/REC-html401-19991224/ loose.dtd"> <HTML> <HEAD> <TITLE>Error</TITLE> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1"> </HEAD> <BODY><H1>401 Unauthorized.</H1></BODY> </HTML> 51 Wednesday, March 14, 12
52 Wednesday, March 14, 12
53 Wednesday, March 14, 12
54 Wednesday, March 14, 12
55 Wednesday, March 14, 12
HTTP Response Headers 56 Wednesday, March 14, 12
Server Information Resource Metadata Caching Hints 57 Wednesday, March 14,
12
Server: Apache X-‐PhApp: oak-‐tp-‐web026 X-‐Webserver: oak-‐tp-‐web026 X-‐Varnish: 3423770493 Via: 1.1
varnish Server Information Headers 58 Wednesday, March 14, 12
Resource Metadata Content-‐Encoding: gzip Content-‐Type: text/html; charset=utf-‐8 Content-‐Length: 12033 Date:
Fri, 06 Jan 2012 05:48:59 GMT 59 Wednesday, March 14, 12
Caching Hints Vary: cookie,Accept-‐Encoding Age: 0 Cache-Control: max-age=600 Expires: Mon
06 Oct 2008 12:43:48 GMT 60 Wednesday, March 14, 12
Connection Headers Connection: close 61 Wednesday, March 14, 12
HTTP Conditional Requests Server Client Last-Modified If-Modified-Since If-Unmodified-Since ETag If-None-Match
62 Wednesday, March 14, 12
Response HTTP/1.1 200 OK Server: Apache X-‐PhApp: oak-‐tp-‐web026 X-‐Webserver: oak-‐tp-‐web026
Vary: cookie,Accept-‐Encoding Content-‐Encoding: gzip Keep-‐Alive: timeout=300, max=100 Content-‐Type: text/html; charset=utf-‐8 Content-‐Length: 12033 Date: Fri, 06 Jan 2012 05:48:59 GMT X-‐Varnish: 3423770493 Age: 0 Via: 1.1 varnish <!DOCTYPE html PUBLIC "-‐//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-‐transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" id="typepad-‐standard" xmlns:fb="http://www.facebook.com/2008/fbml"> ... </html> 63 Wednesday, March 14, 12
64 Wednesday, March 14, 12
64 Wednesday, March 14, 12
64 Wednesday, March 14, 12
64 Wednesday, March 14, 12
64 Wednesday, March 14, 12
64 Wednesday, March 14, 12
Troubleshooting HTTP 65 Wednesday, March 14, 12
Browser Developer Tools 66 Wednesday, March 14, 12
67 Wednesday, March 14, 12
68 Wednesday, March 14, 12
69 Wednesday, March 14, 12
70 Wednesday, March 14, 12
71 Wednesday, March 14, 12
72 Wednesday, March 14, 12
curl 73 Wednesday, March 14, 12
74 Wednesday, March 14, 12
Charles 75 Wednesday, March 14, 12
76 Wednesday, March 14, 12
Fiddler 77 Wednesday, March 14, 12
78 Wednesday, March 14, 12
Network Analysis Tools Wireshark Eavesdrop (Mac OS X) tcpdump snoop
(Solaris) 79 Wednesday, March 14, 12
80 Wednesday, March 14, 12
81 Wednesday, March 14, 12
81 Wednesday, March 14, 12
81 Wednesday, March 14, 12
81 Wednesday, March 14, 12
81 Wednesday, March 14, 12
81 Wednesday, March 14, 12
Connection: close 82 Wednesday, March 14, 12
298158373_a47d6db5cf_b.jpg (flickr: sbisson) HTTP Status Cats: http:/ /httpcats.herokuapp.com/ Images from
GirlieMac Picture Credits 83 Wednesday, March 14, 12