2007cs2366071 hypertext transfer protocol. the world-wide web 2007 cs236607 2 css js html server...
TRANSCRIPT
![Page 1: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/1.jpg)
2007 cs236607 1
HyperText Transfer Protocol
![Page 2: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/2.jpg)
2007 cs236607 2
CSS
JS
HTML
Server
Server
Browser
Browser
JS
CSS
HTML
Transfer of resources is using HTTP
![Page 3: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/3.jpg)
2007 cs 236607 3
host www.google.comBrowser
user requests http:// www.google.com
Web Server
Files
index.html
![Page 4: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/4.jpg)
2007 cs236607 4
Gets an IP Address
Establishes a TCP Connection
Web Server
Sends an HTTP Request
Receives an HTTP Response
Presents a Page
The Browser
Can it present the page now?
How?
To which port?
![Page 5: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/5.jpg)
2007 cs236607 5
Listens
Establishes a TCP Connection
Web Server
Receives an HTTP Request
Sends an HTTP Response
???
The Server
Is that all?
To what?
![Page 6: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/6.jpg)
2007 cs236607 6
protocol://host:port/path#anchor?parameters
http://www.cs.technion.ac.il/~cs236607/index.html
http://www.google.com/search?hl=en&q=blabla
protocol://host:port/path#anchor?parametersprotocol://host:port/path#anchor?parametersprotocol://host:port/path#anchor?parametersprotocol://host:port/path#anchor?parametersprotocol://host:port/path#anchor?parameters
Parameters appear in URLs of dynamic pages
• Are URLs good identifiers?• Can they be used as keys of
resources?
![Page 7: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/7.jpg)
2007 cs236607 7
URL, URN and URIURL is Universal Resource Location
URN is Universal Resource NameIndependent of a specific location, e.g.,urn:ietf:rfc:3187
URI is either a URN or a URLThere are many possible formats to URI’s
mailto:<account@site> news:<newsgroup-name> http://www.cs.technion.ac.il/~cs236607#key123456
![Page 8: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/8.jpg)
2007 cs236607 8
TerminologyWeb Server is an implementation of an
HTTP Daemon (either HTTP/1.0 or HTTP/1.1)
User Agent (UA) is a client (e.g., browser)Origin Server is the server that has the
resource that is requested by a clientProxy acts on behalf of a clientReverse Proxy acts on behalf of a server
![Page 9: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/9.jpg)
Proxy ServersSometimes, a browser sends its request via a
proxy?The goals:
Improve Web traffic Add anonymity
How does the proxy affects HTTP message exchange? How does it change messages? Can the browser affect the behavior of the proxy? Can the Web server affect the behavior of the
proxy?
2007 cs236607 9
![Page 10: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/10.jpg)
2007 cs236607 10
File System
Proxy Server
Web Server
HTTPRequest
HTTPRequest
HTTP Response
HTTPResponse
www.google.com:80
http://www.google.comhttp://www.google.com
The proxy can serve the resource from its own cache, if it is there, without sending the request to the origin server
![Page 11: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/11.jpg)
2007 cs236607 11
DepartmentProxy Server
TechnionProxy Server
IsraelProxy Server
Web Server www.google.com:80
Proxy Caches reduce latency for a given user agent if they can serve the request from their cache.
As a result, they also save bandwidth and reduce the load on the origin server.
Therefore, they reduce latency also for requests that must be sent to the origin server.
![Page 12: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/12.jpg)
2007 cs236607 12
Main Features of HTTPStatelessPersistent connection (in HTTP/1.1)Pipelining (in HTTP/1.1)Caching (improved in HTTP/1.1)Compression negotiation (improved in 1.1)Content negotiation (improved in 1.1)Interoperability of HTTP/1.0 and HTTP/1.1
![Page 13: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/13.jpg)
2007 cs236607 13
Requests and ResponsesA UA sends a request and gets back a
responseRequests and responses have headersHTTP 1.0 defines 16 headers
None is required HTTP 1.1 defines 46 headers
The Host header is required in all requests
![Page 14: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/14.jpg)
2007 cs236607 14
Hop-by-Hop vs. End-to-EndHTTP requests and responses may travel
between the UA and the origin server through a series of proxies
Thus, in an HTTP connection there is a distinction between Hop-by-Hop, andEnd-to-End
Some headers are hop-by-hop and some are end-to-end (in HTTP/1.1)
Each hop is a separate TCP connection
![Page 15: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/15.jpg)
2007 cs236607 15
How is the Chain of Proxies Discovered?A browser sends requests to the proxy that is
specified in the browser settingsAlternatively, Web proxies can be
automatically discovered, for examplethe router redirects all HTTP requests to the
proxy (“transparent caching”)Each proxy knows the address of the next
proxy along the way to the origin server
![Page 16: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/16.jpg)
2007 cs236607 16
InteroperabilityEven if the UA and the origin server
comply with HTTP/1.1, some proxies along the way may only comply with HTTP/1.0
The design of HTTP/1.1 had to take it into account
We will point out features of HTTP/1.1 that were introduced to ensure interoperability with HTTP/1.0
How can HTTP support both backward (to the past) and forward (to the future) interoperability?
![Page 17: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/17.jpg)
2007 cs236607 17
NoteHTTP (both 1.0 and 1.1) has always specified
that an implementation should ignore a header that it does not understandThe header should not be deleted – just
ignored!This rule allows extensions by means of new
headers, without any changes in existing specifications
![Page 18: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/18.jpg)
2007 cs236607 18
![Page 19: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/19.jpg)
2007 cs236607 19
The Format of a Request
method sp URI sp version cr lf
cr lf
Entity(Message Body(
header : value cr lf
header : value cr lf
headerlines
The URI is specified without the host name, unless the request is sent to a proxy
![Page 20: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/20.jpg)
2007 cs236607 20
An Example of a Request
GET /index.html HTTP/1.1
Accept: image/gif, image/jpeg
User-Agent: Mozilla/4.0
Host: www.cs.technion.ac.il:80
Connection: Keep-Alive
[blank line here]
methodrequest URI
version
headers
![Page 21: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/21.jpg)
2007 cs236607 21
![Page 22: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/22.jpg)
2007 cs236607 22
Common Request MethodsGET returns the content of a resourceHEAD only returns the headersPOST sends data to the given URI
OPTIONS requests information about the communication options available for the given URI, such as supported content types* instead of a URI requests information that
applies to the given Web server in generalOPTIONS is not fully
specified
![Page 23: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/23.jpg)
2007 cs236607 23
Additional Request MethodsPUT replaces the content of the given URI
or generates a new resource at the given URI if none exists
DELETE deletes the resource at the given URI
TRACE invokes a remote loop-back of the requestThe final recipient should reflect the
message back to the clientCONNECT switches the proxy to become a
tunnel Do servers really support PUT or
DELETE?
![Page 24: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/24.jpg)
2007 cs236607 24
Range and Conditional Requests (Usually GET)Range requests are requests with the Range
header (only in HTTP/1.1)Conditional requests are related to caching
and they use the following headers (some only in HTTP/1.1)
If-MatchIf-None-MatchIf-Range
If-Unmodified-Since
If-Modified-Since
![Page 25: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/25.jpg)
2007 cs236607 25
Where Do Request Headers Come From?
The UA sends headers with each requestThe user may determine some of these headers through the browser configuration
Proxies along the way may add their own headers and delete existing (hop-by-hop) headers
![Page 26: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/26.jpg)
2007 cs236607 26
(It is Required in HTTP/1.1 but not in HTTP/1.0)
![Page 27: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/27.jpg)
2007 cs236607 27
In HTTP/1.0If the URL is
http://www.example.com/home.html,then the HTTP/1.0 syntax is
GET /home.html HTTP/1.0
and the TCP connection is to port 80 at the IP address corresponding to www.example.com
Why is the Host Header Required in HTTP/1.1?
![Page 28: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/28.jpg)
2007 cs236607 28
Why is the Host Header Required in HTTP/1.1?In HTTP/1.0, there can be at most one
HTTP server per IP addressThis wastes IP addresses, since companies like
to use many “vanity URLs” (that is, URLs that only consist of hostnames)
In HTTP/1.1, requests to different HTTP servers can be sent to port 80 at the same IP address, since each request contains the host name in the Host header
Why is the Hostname not in the URL?
![Page 29: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/29.jpg)
2007 cs236607 29
Why is the Hostname not in the URL?To ensure interoperability with HTTP/1.0
An HTTP/1.0 server will incorrectly process a request that has an absolute URL (i.e., a URL that includes the hostname)
An HTTP/1.1 must reject any HTTP/1.1 (but not HTTP/1.0) request that does not have the Host header
![Page 30: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/30.jpg)
2007 cs236607 30
![Page 31: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/31.jpg)
2007 cs236607 31
The Format of a Response
cr lf
Entity(Message Body)
header : value cr lf
header : value cr lf
headerlines
version spstatus codesp phrase cr lf statusline
![Page 32: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/32.jpg)
2007 cs236607 32
HTTP/1.0 200 OK Date: Fri, 31 Dec 1999 23:59:59 GMT Content-Type: text/html Content-Length: 1354
<html> <body> <h1>Hello World</h1> (more file contents) . . . </body> </html>
An Example of a Responseversion
message body
headers
status phrasestatus code
![Page 33: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/33.jpg)
2007 cs236607 33
![Page 34: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/34.jpg)
2007 cs236607 34
Status Codes in ResponsesThe status code is a three-digit integer,
and the first digit identifies the general category of response: 1xx indicates an informational message 2xx indicates success of some kind 3xx redirects the client to another URL4xx indicates an error on the client's part
Yes, the system blames it on the client if a resource is not found (i.e., 404)
5xx indicates an error on the server's part
![Page 35: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/35.jpg)
2007 cs236607 35
Where Do Response Headers Come From?
The Web server, based on its settings, determines some headers
Applications that create dynamic pages may add additional headers
Proxies along the way may add their own headers and delete existing (hop-by-hop) headers
![Page 36: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/36.jpg)
2007 cs236607 36
Where Do Status Codes Come From?Web servers and applications creating dynamic pages determine status codes
It is important to configure Web servers and write applications creating dynamic pages so that they will return correct, meaningful and useful status codes and headers
![Page 37: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/37.jpg)
2007 cs236607 37
Apache HTTP ServerApache lets each user put an .htaccess file
in her www directoryThe .htaccess file applies to all
subdirectories as well, unless it is overridden by .htaccess files in those subdirectories
The .htaccess file may contain commands that add headers to responses (as well as commands that do other things)
![Page 38: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/38.jpg)
TomcatTomcat is a simple web server that we will
use in this courseIn Tomcat, configuration of HTTP response
headers is in the server.xml file
2007 cs236607 38
![Page 39: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/39.jpg)
2007 cs236607 39
Setting HTTP Headers for Dynamically Generated Content
Headers can be set by using appropriate methods, e.g.,myServlet.setContentType(…)myServlet.setContentLength(…)
![Page 40: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/40.jpg)
2007 cs236607 40
META HTTP-EQUIV TagsThe browser interprets these tags as if they
were headers in the HTTP responseFor example <META HTTP-EQUIV=“Refresh” CONTENT=“5; URL=http://host/path/”>If the value is 0 (instead of 5) and there is no
URL parameter, the same page is continuously refreshed, causing the Back button to stop working
![Page 41: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/41.jpg)
2007 cs236607 41
META HTTP-EQUIV Tagsare Only Read by Browsers
META HTTP-EQUIV tags are interpreted by browsers
Proxies usually don’t read the HTML documents – they only read the headers of the HTTP requests and responses
Therefore, cache-control headers in META HTTP-EQUIV tags actually apply only to the browser’s cache
![Page 42: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/42.jpg)
2007 cs236607 42
![Page 43: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/43.jpg)
2007 cs236607 43
[kanza@csa ~]$ telnet www.cs.technion.ac.il 80Trying 132.68.32.15...Connected to csn.cs.technion.ac.il (132.68.32.15).Escape character is '^]'.GET /~kanza/test.html HTTP/1.0
HTTP/1.1 200 OKDate: Wed, 16 Jan 2008 00:10:20 GMTServer: Apache/2.0.54 (Unix) mod_ssl/2.0.54 OpenSSL/0.9.7g PHP/5.0.4 DAV/2 mod_perl/1.999.21 Perl/v5.8.6Last-Modified: Wed, 16 Jan 2008 00:07:33 GMTETag: "9a42e-79-53ebbb40"Accept-Ranges: bytesContent-Length: 121Connection: closeContent-Type: text/html
<html><head><title>Test for cs236607</title></head><body>This page is being used for testing HTTP.</body></html>
Connection closed by foreign host.[kanza@csa ~]$
![Page 44: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/44.jpg)
2007 cs236607 44
[kanza@csa ~]$ telnet www.cs.technion.ac.il 80Trying 132.68.32.15...Connected to csn.cs.technion.ac.il (132.68.32.15).Escape character is '^]'.GET /~kanza/test.html HTTP/1.1Host: www.cs.technion.ac.il
HTTP/1.1 200 OKDate: Wed, 16 Jan 2008 00:28:48 GMTServer: Apache/2.0.54 (Unix) mod_ssl/2.0.54 OpenSSL/0.9.7g PHP/5.0.4 DAV/2 mod_perl/1.999.21 Perl/v5.8.6Last-Modified: Wed, 16 Jan 2008 00:07:33 GMTETag: "9a42e-79-53ebbb40"Accept-Ranges: bytesContent-Length: 121Content-Type: text/html
<html><head><title>Test for cs236607</title></head><body>This page is being used for testing HTTP.</body></html>
Connection closed by foreign host.[kanza@csa ~]$
![Page 45: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/45.jpg)
2007 cs236607 45
[kanza@csa ~]$ telnet www.cs.technion.ac.il 80Trying 132.68.32.15...Connected to csn.cs.technion.ac.il (132.68.32.15).Escape character is '^]'.GET /~kanza/test.html HTTP/1.1
HTTP/1.1 400 Bad RequestDate: Wed, 16 Jan 2008 00:31:20 GMTServer: Apache/2.0.54 (Unix) mod_ssl/2.0.54 OpenSSL/0.9.7g PHP/5.0.4 DAV/2 mod_perl/1.999.21 Perl/v5.8.6Content-Length: 387Connection: closeContent-Type: text/html; charset=iso-8859-1
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"><html><head><title>400 Bad Request</title></head><body><h1>Bad Request</h1><p>Your browser sent a request that this server could not understand.<br /></p><hr><address>Apache/2.0.54 (Unix) mod_ssl/2.0.54 OpenSSL/0.9.7g PHP/5.0.4 DAV/2 mod_perl/1.999.21 Perl/v5.8.6 Server at www.cs.technion.ac.il Port 80</address></body></html>Connection closed by foreign host.[kanza@csa ~]$
![Page 46: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/46.jpg)
2007 cs236607 46
HTTP/1.1 Supports Both
![Page 47: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/47.jpg)
2007 cs236607 47
Images
HTML Code
Style Sheet
What we see on the browser can be a combination of several
resources
…
How can we improve the efficiency of presenting a page?
What is wrong with a naïve retrieval of the resources?
![Page 48: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/48.jpg)
2007 cs236607 48
The faculty’s homepage requires seven HTTP
requests
HttpWatch
![Page 49: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/49.jpg)
2007 cs236607 49
The ProblemTypically, each resource consists of several
files, rather than just oneEach file requires a separate HTTP request
HTTP/1.0 requires opening a new TCP connection for each request
TCP has a slow start and therefore, opening a series of new connections is inefficient
![Page 50: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/50.jpg)
2007 cs236607 50
Persistent Connections are the Default in HTTP/1.1In HTTP/1.1, several requests can be sent
on the same TCP connectionThe slow-start overhead is incurred only
once per resourceA connection is closed if it remains idle for
a certain amount of timeAlternatively, the server may decide to
close it after sending the responseIf so, the response should include the
header Connection: close
![Page 51: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/51.jpg)
2007 cs236607 51
PipeliningWhen the connection is persistent, the
next request can be sent before receiving the response to the previous request
Actually, a client can send many requests before receiving the first response
Performance can be greatly improvedNo need to wait for network round-trips
![Page 52: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/52.jpg)
2007 cs236607 52
Best-Possible Use of TCPA Client sends requests in some given
orderTCP guarantees that the requests are
received in the order that they were sentThe server sends responses in the order
that it received the corresponding requestsTCP guarantees that responses are
received in the order that they were sentThus, the client knows how to associate the
responses with its requests
![Page 53: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/53.jpg)
2007 cs236607 53
But a TCP Connection isJust a Byte StreamSo, how does the client know where one
response ends and another begins?Parsing is inefficient and anyhow will not work
(why?)The server must add the Content-Length
header to the response or else it must close the connection after
sending the responseWill it work for dynamic pages?
![Page 54: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/54.jpg)
2007 cs236607 54
Sending Dynamic PagesA server has to buffer a whole dynamic
page to know its length (and only then the server can send the page)The latency is increased
Alternatively, the server can break an entity into chunks of arbitrary length and send these chunks in a series of responsesOnly one chunk at-a-time has to be buffered
![Page 55: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/55.jpg)
2007 cs236607 55
Chunked Transfer EncodingEach chunk is sent in a separate message
that includes the headerTransfer-Encoding: Chunked
and also includes the length of the chunk in the Content-Length header
A zero-length chunk marks the end of the message
![Page 56: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/56.jpg)
2007 cs236607 56
TrailersIf an entity is sent in chunks, some header
values can be computed only after the whole entity has been sent
The first chunk includes a Trailer header that lists all the headers that are deferred until the trailer
A server cannot send a trailer unless the information is purely optional, or the client has sent the header TE: trailers
![Page 57: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/57.jpg)
2007 cs236607 57
The Content-Length Headerin RequestsThe Content-Length header is also
applicable to POST and PUT requests
![Page 58: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/58.jpg)
2007 cs236607 58
More on the Connection HeaderThe Connection header may contain connection tokes, e.g., close (discussed earlier)
This header also lists all the hop-by-hop headers, thereby telling the recipient that all these headers must be removed before forwarding the message
![Page 59: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/59.jpg)
2007 cs236607 59
Interoperability Rule in HTTP/1.1If a Connection header is received in an HTTP/1.0 message, it means that it was incorrectly forwarded by an HTTP/1.0 proxyTherefore, all the headers it lists were incorrectly forwarded and must be ignored
![Page 60: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/60.jpg)
2007 cs236607 60
![Page 61: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/61.jpg)
2007 cs236607 61
Type of Web CachesBrowser Caches
A portion of the hard disk is used to store representations of resources that have already been displayed
If a resource is requested again (for example, by hitting the “back” button), the request is served from the browser cache
Proxy Caches These are shared caches – they serve many
users
![Page 62: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/62.jpg)
2007 cs236607 62
client
client
client
server
server
proxyserver
GET /fruit/apple.gif
GET /fruit/apple.gif
GET /fruit/apple.gif
![Page 63: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/63.jpg)
2007 cs236607 63
client
client
client
10Mbps LAN
R R
1.5Mbps
server
server15 req/sec100Kbits/req proxy
server24%-32% hit rate is possible,since many users share the cache and, therefore, there isa large number of shared hits
Internet
![Page 64: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/64.jpg)
2007 cs236607 64
Reasons for UsingWeb CachesWeb caches reduce latency
Since the cache is closer to the client, it takes less time for the client to get the resource and display it
Web caches save bandwidthSince a resource has to be brought from the
server just once, clients that need this resource consume less bandwidth
![Page 65: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/65.jpg)
2007 cs236607 65
More Reasons for UsingWeb CachesWeb caches reduce the load on servers (for
the same reason that they save bandwidth)Since bandwidth is saved and server load is
reduced, the latency is reduced for everyoneWeb caches give some measure of
redundancy
![Page 66: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/66.jpg)
2007 cs236607 66
For example, how much traffic is savedif the Google icon is not sent back with
each search result?
![Page 67: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/67.jpg)
2007 cs236607 67
Points to Consider When Designing a Web SiteCaches can help the Web site to load fasterCaches may “hide” the users of the Web site,
making it difficult to see who is using the siteCaches may serve content that is out of date,
or stale
Do commercial web sites like caches?
![Page 68: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/68.jpg)
2007 cs236607 68
TerminologyRepresentations are copies of resources
that are stored in cachesactually, caches store complete responses,
including headersIf a request is served from a cache, then it
should be semantically transparent, that is, it should be the same as a request that is served from the origin server
A representation is fresh if it is identical to the resource that is available at the origin server
If it is not identical, then it is stale
![Page 69: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/69.jpg)
2007 cs236607 69
The Risk in Cachingand How to Avoid ItResponses might not be semantically
transparentThe cache should determine that the
representation is fresh before sending it to the client
If it is not fresh, the cache should forward the request to the origin server or to another cache
![Page 70: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/70.jpg)
2007 cs236607 70
Caching Improves Latency and Saves Bandwidth in Two WaysIn some cases, caching eliminates the need to
send requests to the origin server by using an expiration mechanism
In other cases, caching eliminates the need to return full responses from the origin server by using a validation mechanism
![Page 71: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/71.jpg)
2007 cs236607 71
An Example of Using a Validation Mechanism
client
server
cache
•Client: GET /fruit/apple.gif•Server responds withLast-Modified-Date: ...
•Server returns either 304 Not Modified or resource
•Client sendsGET /fruit/apple.gif …If-Modified-Since: …
•Client caches object and last-modified-date
![Page 72: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/72.jpg)
2007 cs236607 72
Validating an ObjectIf the object is stale (i.e., not fresh), the
cache will ask the origin server to validate the object
In response, the origin server will eithertell the cache that the object has not changed,
orsend a new copy of the object to the cache
![Page 73: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/73.jpg)
2007 cs236607 73
Validation MechanismsIf-modified-since last-modified date
Cannot be used with dynamic pagesETags can be used for dynamic pages and also
when a site cycles through several possible responses
![Page 74: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/74.jpg)
Are there Limitations on what to Store in Cache?Should a proxy store in the cache all the
responses it ever received?
2007 cs236607 74
![Page 75: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/75.jpg)
2007 cs236607 75
The Following Resourcesare not Cached
The headers of a response tell the cache not to keep the resource
The response has no validator (i.e., an Expires value, a Max-Age value, a Last-Modified value or an ETag)
The resource is authenticated or securedFurthermore, it is difficult to cache
dynamic pages and pages with cookies
![Page 76: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/76.jpg)
2007 cs236607 76
Fresh Objects Are Served From the CacheAn object is fresh in the following cases:
The object has an expiry time or other age-controlling directive, and is still within the fresh period
The browser cache has already seen the object, and has been set to check for newer versions once a session
A proxy cache has received the object recently, and the object was modified relatively long ago (this is a heuristic – see later)
![Page 77: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/77.jpg)
2007 cs236607 77
The Expires HTTP HeaderA response may include an Expires header:
Expires: Fri, 31 Oct 2008 14:19:41 GMTIf an expiry time is not specified, the cache
can heuristically estimate the expiry time
![Page 78: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/78.jpg)
2007 cs236607 78
Expiration ModelSection 13.2 of RFC 2616
The Expires header cannot be used correctly if there is a clock skew and the resource is fresh for only a short time
The header Cache-Control: Max-Age is used to calculate the freshness lifetime:
freshness_lifetime = max_age_valueIf there is no max-age directive, then
freshness_lifetime = expires_value – date_valueAll the information comes form the origin server;
hence, not vulnerable to clock skew
![Page 79: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/79.jpg)
2007 cs236607 79
Age Calculations (Sec. 13.2.3)When a proxy sends a response that is
obtained from its cache, it must calculate (an upper bound on) the age and include it in the Age response headerThe calculation uses values specified in the
headers of the cached message and the proxy’s own clock
The calculation adds the resident time + an upper bound on the transmission time to the an upper bound on the received age
Is it always a reliable (correct) calculation?What happens if some proxy along the way runs
HTTP/1.0?
![Page 80: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/80.jpg)
2007 cs236607 80
Age Calculations (Sec. 13.2.3)
The freshness lifetime (from the previous slide) is compared with the age to determine if the response is still fresh (and, hence, can be sent)
![Page 81: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/81.jpg)
2007 cs236607 81
A Possible HeuristicIf the cache received the object 10 hours
after it was last modified, then it can heuristically determine that the expiry time is 1 hour after it has received it
In general, add 10% (or some other value) of the interval between the last-modification time (given by the Last-Modified header) and the time it was received
![Page 82: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/82.jpg)
2007 cs236607 82
The Cache-Control Header(Introduced in HTTP 1.1)
The following are possible values for the Cache-Control header in responses
max-age=<seconds> Specifies the maximum amount of time that
an object will be considered fresh (similar to, but overrides the Expires header)
s-maxage=<seconds> Similar to max-age, except that it only
applies to proxy (shared) caches
![Page 83: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/83.jpg)
2007 cs236607 83
More Possible Values for the Cache-Control Header
publicDocument is cacheable even if normal rules
say that it shouldn’t be (e.g., authenticated document)
privateThe document is for a single user and can
only be stored in private (non-shared) cachesno-store (may also appear in requests)
The response should never be cached and should not even be stored in a temporary location on a disk (this value is intended to prevent inadvertent copies of sensitive information)
![Page 84: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/84.jpg)
2007 cs236607 84
More Possible Values for the Cache-Control Headermust-revalidate
Tell caches that they must obey any freshness information provided with the object (HTTP allows caches to take liberties with the freshness of objects)
proxy-revalidate Similar to must-revalidate, except that it only
applies to proxy (shared) caches
![Page 85: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/85.jpg)
2007 cs236607 85
No-CacheSome values of the Cache-Control header
are meaningful in either responses or requests
no-cacheIn a response, it means not to use the
response again without revalidation (this value can apply to cache directive headers; see Sec. 14.9 of RFC2616)
In a request, it means to bring a copy from the origin server (i.e., not to use a cache)
![Page 86: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/86.jpg)
2007 cs236607 86
More Possible Values for theCache-Control Header in Requestsmax-age=<seconds>
The response should not be older than the given value
max-stale=<seconds>The response could exceed its expiration
time by the specified amountmin-fresh=<seconds>
The response should remain fresh for at least the specified amount of time
See Sec. 14.9 of RFC2616 for more details
![Page 87: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/87.jpg)
2007 cs236607 87
The Pragma HeaderIn a request, the header Pragma: no-cache is the same as Cache-Control: no-cache
Don’t use Pragma – its meaning is specified only for requests and it is used just for compatibility with HTTP/1.0
For interoperability, it is safer to set both the Pragma and the Cache-Control response headers to the value no-cache
![Page 88: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/88.jpg)
2007 cs236607 88
The Reload (Refresh) ButtonHitting the reload button in the browser
brings a copy from a shared cache, but not necessarily from the origin serverThere is no 100% guarantee that this is a fresh
copyHitting Shift+Reload brings a 100%-
guaranteed fresh copy (i.e., from the origin server)
![Page 89: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/89.jpg)
2007 cs236607 89
How Can a Client Forcea Fresh Copy?A fresh copy is obtained from the origin
server if the request includes the following header Cache-Control: no-cache
The proxy must revalidate its copy with the origin server if the following header is included in the requestCache-Control: max-age=0
![Page 90: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/90.jpg)
2007 cs236607 90
Who Adds Cache-Control Headers?The server
The configuration of the server determines which cache-control headers are added to responses
The author of the page can add headers by means of the .htaccess file (only in the Apache server)
The application that generates dynamic pages, e.g., servlets, ASP, PHP
![Page 91: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/91.jpg)
2007 cs236607 91
Cache-Control in HTTP-EQUIVThe author of the page can add, to the
document itself, a cache-control header by means of the META HTTP-EQUIV tag<meta http-equiv=“cache-control” content
=“no cache”>But usually only the browser interprets
this tagProxies along the way don’t read it, since
they don’t read the document
![Page 92: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/92.jpg)
2007 cs236607 92
ValidatorsA validator is any mechanism that may help
in determining whether a copy is fresh or staleA strong validator is, for example, a counter
that is incremented whenever the resource is changed
A weak validator is, for example, a counter that is incremented only when a significant change is madeFor example, a weak validator may not change if the
only change in the site is the number of visitors …
![Page 93: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/93.jpg)
2007 cs236607 93
Last-Modified HeaderThe most common validator is the time
when the document was last changed, the last-modified timeIt is given by the Last-Modified headerIn principle, this header should be included
in every response; however, there is no last-modified time for dynamic pages
It is a weak validator if an object can change more than once within a one-second interval
![Page 94: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/94.jpg)
2007 cs236607 94
ETag (Entity Tag)ETag is a strong validator (i.e., a unique
identifier) generated by the serverIt is part of the HTTP/1.1 specification (not
available in HTTP/1.0)The specification does not say how to generate
itThe preferred behavior for an HTTP/1.1
origin server is to send both an ETag header and a Last-Modified header
![Page 95: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/95.jpg)
2007 cs236607 95
Conditional RequestsThe conditional headers are
If-Modified-SinceIf-Unmodified-SinceIf-MatchIf-None-MatchIf-Range
These headers are used to validate an object (i.e., check with the origin server whether the object has changed)
![Page 96: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/96.jpg)
2007 cs236607 96
HTTP/1.1 304 Not Modified Date: Fri, 31 Dec 1999 23:59:59 GMT [blank line]
If-Modified-Since HeaderThe If-Modified-Since header is used
with a GET requestIf the requested resource has been
modified since the given date, the server returns the resource as it normally would (i.e., the header is ignored)
Otherwise, the server returns a 304 Not Modified response, including the Date header, but with no message body
![Page 97: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/97.jpg)
2007 cs236607 97
If-None-Match HeaderA cache may store several responses for the same URI, each having a different ETagA server may cycle through a set of possible
responsesThe cache sends a request with a list of
ETags in the header If-none-matchIf no ETag on the list matches the
resource’s current ETag, the server returns a normal response
Otherwise, the server returns a response with 304 (Not Modified) and an ETag header that indicates which cache entry is currently valid
![Page 98: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/98.jpg)
2007 cs236607 98
If-Unmodified-Since HeaderThe If-Unmodified-Since header can be
used with any method If the resource has not been modified since
the given date, the server returns the same response as it normally would
Otherwise, the server returns a 412 Precondition Failed response
HTTP/1.1 412 Precondition Failed [blank line]
![Page 99: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/99.jpg)
2007 cs236607 99
More on Conditional RequestsThe following conditional headers are useful
in requests that are more complex than just a simple GET request; for example, in range requestsIf-Unmodified-SinceIf-MatchIf-Range
![Page 100: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/100.jpg)
2007 cs236607 100
The Vary HeaderA response may depend on some header
fields of the requestFor example, the Accept-Language and the Accept-Charset headers determine the specific response
The Vary header in a response lists all the relevant selecting header fields of the request
![Page 101: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/101.jpg)
2007 cs236607 101
Finding Relevant Cache EntriesA cache stores responses using the URI as a
keyA cache can return a stored response if
The URI of the new request matches the URI of stored response
The selecting headers of the new request match the selecting header fields in the Vary header of the stored response
![Page 102: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/102.jpg)
2007 cs236607 102
No TransformSometimes proxies transform responses
(for example, to reduce image size before transmitting over a slow link)
Some responses cannot be blindly transformed without losing information
The no-transform directive in the Cache-Control header is used to prevent transformations (it applies to both requests and responses)
![Page 103: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/103.jpg)
2007 cs236607 103
![Page 104: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/104.jpg)
Restrict AccessSome applications should restrict access to
authorized users onlyIP-address-based
Access is permitted only to certain IP addressesForm-based
The first page shown to the user is a form that requests for a password
HTTP Basic
2007 cs236607 104
Does it also allow the user application authenticate the server?
![Page 105: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/105.jpg)
HTTP BasicThe user tries to access the pageThe server response is
HTTP/1.1 401 UnauthorizedWWW-Authenticate: Basic realm=“Description of the restricted site”
The browser pops up a prompt window asking for a user name and password
The user input is encoded and sent to the serverAuthorization: Basic emFjaGFyawFzOMFwcGxcGlCg==
If authorization succeeds, resources are sent to the browser
2007 cs236607 105
name;password encoded in Base64
![Page 106: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/106.jpg)
2007 cs236607 106
![Page 107: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/107.jpg)
HTTP is StatelessTheoretically, each request-response is an
independent interactionHow can we implement an online store
Payment and shipment are according to the state of some virtual shopping cart
Does persistent connection provide a solution?
2007 cs236607 107
![Page 108: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/108.jpg)
SessionsA session is a sequence of related
interactions between a client and a serverA session allows responses to be according to
a stateA shared state can be shared by several usersA session state is a state of a single userA transient state is a refers to a single
interaction
2007 cs236607 108
![Page 109: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/109.jpg)
Implementing SessionsURL RewritingHidden Form FieldsCookies
2007 cs236607 109
![Page 110: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/110.jpg)
2007 cs236607 110
![Page 111: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/111.jpg)
2007 cs236607 111
Bandwidth OptimizationRange requestsExpect and 100 (Continue)Compression
![Page 112: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/112.jpg)
2007 cs236607 112
Range RequestsA range request uses the Range header
for specifying the requested portions of a resource
A range response is returned with the Content-Range header that specifies the offset and length of the returned range
The multipart/byteranges MIME type allows the transmission of multiple ranges in one response
![Page 113: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/113.jpg)
2007 cs236607 113
When to Use Range Requests To read the initial part of an object
For example, if the object is an image, reading the initial part provides the information for doing the layout
To complete a response transfer that was interrupted (either by the user or by network failure)
To read the tail of a growing object
![Page 114: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/114.jpg)
2007 cs236607 114
Range Requests and CachingA range response is returned with the status
code 206 (Partial Content)This prevents HTTP/1.0 proxies from
accidentally treating the response as a full one, and using it later as a cached response
![Page 115: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/115.jpg)
2007 cs236607 115
Conditional Range RequestsTo request conditionally the prefix of a
resource, the If-None-Match header can be usedThis happens when the client has a response
containing the prefix in its cache, and the client wants to validate that response
![Page 116: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/116.jpg)
2007 cs236607 116
The If-Range HeaderSometimes the client’s cache may have the
object, but without the requested rangeHence, the client sends a range request
The server should return the requested range if the object has not changed
Otherwise, the server should send back a full response
![Page 117: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/117.jpg)
2007 cs236607 117
The Clients Wants the Range only if the Object has not ChangedThe client sends a range request with the
If-Match headerThe server returns the the range (i.e., normal)
response if the object has not changedOtherwise, the server returns 412
(Precondition Failed) and the client should send a new request for the full object
Two requests might be neededThe If-Range header does the above interaction
in one request
![Page 118: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/118.jpg)
2007 cs236607 118
Expect and 100 (Continue)A request (e.g., POST) may contain a
large objectSometimes there is no need to send the
object to find out that the request failsFor example, if the client lacks authorization,
or the server is too busy
In HTTP/1.1, the client can send just the headers and wait for the server’s indications that it can also send the object
![Page 119: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/119.jpg)
2007 cs236607 119
The Expect HeaderThe client must include the new header
Expect: 100 with the rest of the headers that it initially sends (why?)The server should respond with the status code
100 (Continue), or with the usual status code if it cannot handle the request
HTTP/1.1 has some rules for avoiding infinite waits by clients or wasted bandwidth
![Page 120: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/120.jpg)
2007 cs236607 120
CompressionHTTP/1.1 makes a clear distinction
between end-to-end encoding (the Content-Encoding response header) and hop-by-hop encodings (the Transfer-Encoding response header)
A client uses the Accept-Encoding for specifying the content encodings that it can handle and the ones it prefers
The client uses the TE header similarly for transfer encodings
![Page 121: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/121.jpg)
2007 cs236607 121
Content NegotiationsServer-driven content negotiation
The client sends its preferences using the headers Accept-Language, Accept-Charset, etc.
The server chooses the representation that best matches the client’s preferences
The headers controlling content negotiations may include wildcards and quality values (qvalues) between 0.0 and 1.0Accept-Language: en, fr;q=0.5, da;q=0.1
![Page 122: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/122.jpg)
2007 cs236607 122
Agent-Driven Content NegotiationWhen the client request a varying
resource, the server replies with a 300 (Multiple Choices) response and it listsThe available representations and their
properties (e.g., language, charset, etc.)The Alternate header has been reserved for
this purpose, but its specification has not been completed
Hence, server-driven negotiation is the only usable form
![Page 123: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/123.jpg)
2007 cs236607 123
The Vary HeaderbContent negotiation and caching can interact
in subtle waysHence, the Vary header (that was mentioned
earlier)
![Page 124: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/124.jpg)
2007 cs236607 124
Warnings (New in HTTP/1.1)The Warning header has codes indicating
some potential problems with the response, even if the status code is 200 (OK)For example, when returning a stale response
because it could not be validatedWarnings are divided into two types based
on the first digit (out of three) digitWarning of one type should be deleted after a
successful revalidation and those of the second type should be retained Hence, this mechanism is extensible to future warning
codes
![Page 125: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/125.jpg)
2007 cs236607 125
New Status Codes in HTTP/1.124 new status codes in HTTP/1.1
100 (Continue)206 (Partial Content)300 (Multiple Choices)409 (Conflict) is used when a request conflicts
with the current state of the resource (e.g., a PUT request might violate a versioning policy)
410 (Gone) is used when a resource has been removed permanently It indicates that links to the resource should be
deleted
![Page 126: 2007cs2366071 HyperText Transfer Protocol. The World-Wide Web 2007 cs236607 2 CSS JS HTML Server Browser JS CSS HTML Transfer of resources is using HTTP](https://reader035.vdocuments.mx/reader035/viewer/2022062801/56649e265503460f94b15495/html5/thumbnails/126.jpg)
2007 cs236607 126
LinksRequest for Comments 2616 (rfc2616)A caching tutorial at
http://www.mnot.net/cache_docs/