Download presentation
Presentation is loading. Please wait.
Published byJussi Laakso Modified over 6 years ago
1
Web Server Design Assignment #2: Conditionals & Persistence
Old Dominion University Department of Computer Science CS 495/595 Spring 2012 Michael L. Nelson
2
Grading To be done by an automated program that will test most (all?) combinations assignment is listed under the day it is to be demoed in class each group will give a 3-4 minute status report the week before an assignment is due! If you have a question: the class list mimic the behavior of a well known Apache server (e.g.,
3
Methods to Support Same as assignment #1 More guidance re: OPTIONS
mime type response will be “message/http” with a content length of 0 (i.e., do not return an entity body) support the “*” URI from section 9.2: If the Request-URI is an asterisk ("*"), the OPTIONS request is intended to apply to the server in general rather than to a specific resource. Since a server's communication options typically depend on the resource, the "*" request is only useful as a "ping" or "no-op" type of method; it does nothing beyond allowing the client to test the capabilities of the server. A 200 response SHOULD include any header fields that indicate optional features implemented by the server and applicable to that resource (e.g., Allow), possibly including extensions not defined by this specification. The response body, if any, SHOULD also include information about the communication options. The format for such a body is not defined by this specification, but might be defined by future extensions to HTTP. Content negotiation MAY be used to select the appropriate response format. If no response body is included, the response MUST include a Content-Length field with a field-value of "0".
4
Methods to Support Any GET method that does not result in a 20X response code MUST have a text/html entity generated by the server explaining the response code (unless prohibited, like 304) HTTP/ Moved Permanently Date: Mon, 16 Feb :33:10 GMT Server: Apache/2.2.0 Location: Content-Length: 305 Content-Type: text/html; charset=iso <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>301 Moved Permanently</title> </head><body> <h1>Moved Permanently</h1> <p>The document has moved <a href=" <hr> <address>Apache/2.2.0 Server at Port 80</address> </body></html> HTTP/ Bad Request Date: Mon, 16 Feb :30:12 GMT Server: Apache/2.2.0 Content-Length: 296 Connection: close Content-Type: text/html; charset=iso <!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.2.0 Server at Port 80</address> </body></html> HTTP/ Method Not Implemented Date: Mon, 16 Feb :34:01 GMT Server: Apache/2.2.0 Allow: GET,HEAD,POST,OPTIONS,TRACE Content-Length: 293 Connection: close Content-Type: text/html; charset=iso <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>501 Method Not Implemented</title> </head><body> <h1>Method Not Implemented</h1> <p>NOTAMETHOD to /index.shtml not supported.<br /> </p> <hr> <address>Apache/2.2.0 Server at Port 80</address> </body></html>
5
Status Codes to Support
Same as assignment #1, plus: 301 Moved Permanently if “/foo” is a directory, the server should 301 redirect to “/foo/” 302 Found takes a configurable list of regular expressions and provides URIs that the server should 302 redirect to 304 Not Modified 408 Request Timeout 412 Precondition Failed
6
302 Redirection # # Status: Incoming RE Redirect URI
302: ^(.*)/index.html$ $1/fairlane.html 302: ^(.*)/1.[234]/(.*) $1/1.1/$2
7
Request Headers Same as assignment #1, but: and add:
optional: Connection: close implies supporting persistent & long-lived connections and add: If-Modified-Since If-Unmodified-Since If-Match If-None-Match
8
Response Headers Same as assignment #1, plus: ETag Location
9
MIME Types Same as assignment #1
10
Further Guidance Only “strong” ETags need to be computed
see week 3 slides for a possible implementation Use a logical “AND” when combining: If-Modified-Since If-Unmodified-Since If-Match If-None-Match be stingy: all conditions must be satisfied to send data if conditionals would yield both 304 & 412, then send only the 304 Terminate connections after 15 idle seconds
11
Default Files for Directory Listings
Have a configurable file substitute for directory listing. e.g., on requests for “…/foo/”, Apache will substitute “…/foo/index.html” if it is present. our “special file” for A2 will be “fairlane.html” why? because we like Fairlanes
12
Directories as Resources
If the resource is a directory and the directory does not have a default file in it, then generate and HTML entity for the directory and its contents.
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.