Slide 1

Slide 1 text

HTTP Andrew Liu

Slide 2

Slide 2 text

Hypertext Transfer Protocol

Slide 3

Slide 3 text

Hypertext Transfer Protocol Prof. Mike

Slide 4

Slide 4 text

URL - Uniform Resource Locator https://www.facebook.com/prof.mike.chen

Slide 5

Slide 5 text

URL - Uniform Resource Locator https://www.facebook.com/prof.mike.chen scheme name http https spdy

Slide 6

Slide 6 text

URL - Uniform Resource Locator https://www.facebook.com/prof.mike.chen scheme name http https spdy authority

Slide 7

Slide 7 text

URL - Uniform Resource Locator https://www.facebook.com/prof.mike.chen scheme name http https spdy authority path

Slide 8

Slide 8 text

Mike

Slide 9

Slide 9 text

Mike Hi Mike, How are you?

Slide 10

Slide 10 text

Mike Hi Mike, How are you? #@!@#!#$#@$

Slide 11

Slide 11 text

Mike

Slide 12

Slide 12 text

Mike Hi Mike, How are you?

Slide 13

Slide 13 text

Mike Hi Mike, How are you? Fine

Slide 14

Slide 14 text

Mike Hi Mike, How are you? Fine english://mike/status

Slide 15

Slide 15 text

www.facebook.com https://www.facebook.com/prof.mike.chen

Slide 16

Slide 16 text

www.facebook.com GET /prof.mike.chen HTTP/1.1 https://www.facebook.com/prof.mike.chen

Slide 17

Slide 17 text

www.facebook.com GET /prof.mike.chen HTTP/1.1 .... https://www.facebook.com/prof.mike.chen

Slide 18

Slide 18 text

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: ....

Slide 19

Slide 19 text

www.facebook.com GET / HTTP/1.1 .... https://www.facebook.com/

Slide 20

Slide 20 text

www.facebook.com GET / HTTP/1.1 .... https://www.facebook.com/ How does it know I have logged in?

Slide 21

Slide 21 text

HTTP is Stateless Server doesn’t know what the user did last time.

Slide 22

Slide 22 text

www.facebook.com

Slide 23

Slide 23 text

www.facebook.com Hi, I’m Mike.

Slide 24

Slide 24 text

www.facebook.com Hi, I’m Mike. Ok, you’re Mike.

Slide 25

Slide 25 text

www.facebook.com Hi, I’m Mike. Ok, you’re Mike. Everyone can be Mike now!

Slide 26

Slide 26 text

www.facebook.com

Slide 27

Slide 27 text

www.facebook.com Hi, I’m Mike. My password is “lab430”.

Slide 28

Slide 28 text

www.facebook.com Hi, I’m Mike. My password is “lab430”. Ok, you’re Mike. Code: a3ad31

Slide 29

Slide 29 text

www.facebook.com Hi, I’m Mike. My password is “lab430”. Ok, you’re Mike. Code: a3ad31 My code is a3ad31.

Slide 30

Slide 30 text

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.

Slide 31

Slide 31 text

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.

Slide 32

Slide 32 text

Cookie to Rescue

Slide 33

Slide 33 text

Cookie to Rescue Key - value pair storage

Slide 34

Slide 34 text

Cookie to Rescue Key - value pair storage Sent every time in HTTP request header Cookie: km_dbg=0; heroku_session_v=1; ...

Slide 35

Slide 35 text

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

Slide 36

Slide 36 text

HTTP Status Code

Slide 37

Slide 37 text

HTTP Status Code 2XX Success 200 OK

Slide 38

Slide 38 text

HTTP Status Code 2XX Success 200 OK 3XX Redirection 301 Move Permanently 302 Found (a.k.a. Moved Temporarily) 304 Not Modified

Slide 39

Slide 39 text

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

Slide 40

Slide 40 text

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

Slide 41

Slide 41 text

Advanced Topics

Slide 42

Slide 42 text

mikechen.com

Slide 43

Slide 43 text

mikechen.com http://mikechen.com/

Slide 44

Slide 44 text

mikechen.com GET / HTTP/1.1 http://mikechen.com/

Slide 45

Slide 45 text

mikechen.com GET / HTTP/1.1 ... http://mikechen.com/

Slide 46

Slide 46 text

mikechen.com GET / HTTP/1.1 ... http://mikechen.com/

Slide 47

Slide 47 text

mikechen.com

Slide 48

Slide 48 text

mikechen.com http://mikechen.com/

Slide 49

Slide 49 text

mikechen.com Modified? http://mikechen.com/

Slide 50

Slide 50 text

mikechen.com Modified? No! http://mikechen.com/

Slide 51

Slide 51 text

mikechen.com Modified? No! http://mikechen.com/

Slide 52

Slide 52 text

HTTP Request Header

Slide 53

Slide 53 text

HTTP Request Header Host Host: www.apple.com

Slide 54

Slide 54 text

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)  

Slide 55

Slide 55 text

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

Slide 56

Slide 56 text

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

Slide 57

Slide 57 text

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

Slide 58

Slide 58 text

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

Slide 59

Slide 59 text

HTTP Response Header

Slide 60

Slide 60 text

HTTP Response Header Cache-Control Cache-Control: max-age=3600, public

Slide 61

Slide 61 text

HTTP Response Header Cache-Control Content-Encoding Cache-Control: max-age=3600, public Content-Encoding: gzip

Slide 62

Slide 62 text

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

Slide 63

Slide 63 text

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”

Slide 64

Slide 64 text

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

Slide 65

Slide 65 text

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

Slide 66

Slide 66 text

HTTP Verbs

Slide 67

Slide 67 text

HTTP Verbs GET GET /books read

Slide 68

Slide 68 text

HTTP Verbs GET POST GET /books read POST /books create

Slide 69

Slide 69 text

HTTP Verbs GET POST PUT GET /books read POST /books create PUT /books/hunger-game update

Slide 70

Slide 70 text

HTTP Verbs GET POST PUT DELETE GET /books read POST /books create PUT /books/hunger-game update DELETE /books/hunger-game delete

Slide 71

Slide 71 text

No content

Slide 72

Slide 72 text

No content

Slide 73

Slide 73 text

or

Slide 74

Slide 74 text

or GET /search?q=mike+chen HTTP/1.1 Host: www.google.com.tw User-Agent: Mozilla/4.0

Slide 75

Slide 75 text

{ :q => “mike chen” } or GET /search?q=mike+chen HTTP/1.1 Host: www.google.com.tw User-Agent: Mozilla/4.0

Slide 76

Slide 76 text

No content

Slide 77

Slide 77 text

Slide 78

Slide 78 text

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

Slide 79

Slide 79 text

END