Nuts and Bolts: HTTP
Kay Ashaolu
Servers Return Representations
- How do we decide which HTML to send?
- How do we use methods and headers?
- How do we represent errors?
What resource to return?
- How are resources specified?
Hostname/Path -> Resource
- https://ucb-info-frontend-webarch.github.io/lectures/content/html/l-introduction.html
- How to specify hostname in HTTP?
- How to specify path?
- What method to use?
Webserver
-
Associate "lectures/content/html/l-introduction.html" with
- https://github.com/UCB-INFO-FRONTEND-WEBARCH/ucb-info-frontend-webarch.github.io/blob/master/lectures/content/html/l-introduction.html
-
Associate "../style.css" with
- https://github.com/UCB-INFO-FRONTEND-WEBARCH/ucb-info-frontend-webarch.github.io/blob/master/lectures/content/style.css
Methods
-
GET
- Requests data from a specified resource
-
POST
- Submits data to be processed to a specified resource
-
PUT
- Update specified resource
Missing File
- What should we do if we request a file that is not there?
- Return "Oops!"
- Return nothing?
- Return standard HTML?
HTTP Response Codes
- Numbers are unambiguous, can be read by machines
- Always return a response code
- Return text as well for human readability
HTTP Response Numbers
- 200's: OK
- 300's: Redirect
- 400's: Client Errors
- 500's: Server Errors
Demo 200 OK
* Connected to info253.p2ptrainer.com (74.50.7.240) port 80 (#0)
> GET /index.html HTTP/1.1
> Host: info253.p2ptrainer.com
> User-Agent: curl/7.43.0
> Accept: */*
Demo 200 OK
< HTTP/1.1 200 OK
< Date: Tue, 20 Sep 2016 05:55:21 GMT
< Server: Apache/2.4.16 (Unix) OpenSSL/0.9.8e-fips-rhel5 mod_bwlimited/1.4 mod_fcgid/2.3.9
< Last-Modified: Tue, 20 Sep 2016 05:37:12 GMT
< ETag: "24f-53ce9d202d200"
< Accept-Ranges: bytes
< Content-Length: 591
< Content-Type: text/html
<
<
<!DOCTYPE html>
<html>
...
300’s: Redirect
- 301: Permanent Redirect
- 302: Temporary Redirect
- Location: Header with URI of target
400’s: Client errors
- 401: Unauthorized
- 404: Resource Not Found
500’s: Server Errors
- 500: Internal Server Error (Hard drive on fire)
Fun
- When things go wrong, chance to play
- HeyZap
Response Headers
- Gave metadata about request
- Return metadata about response
- Size, representation, language
Different types of resources?
- HTML
- CSS
- JavaScript
- Images
- ...
HTTP Versions
- 1.0: Make a new connection each time
- 1.1: Optionally use same connection
- 2.0: Use same connection for multiple requests
Why have different protocols?
- HTTP is about resource manipulation
- Specifying what you want to do with a resource
- How it is represented
- Optimized for web browsing