Assignment #3 - Transfer Encoding and Content Negotiation

Download Report

Transcript Assignment #3 - Transfer Encoding and Content Negotiation

Web Server Design
Assignment #3: Transfer Encoding
& Content Negotiation
Due: 03/24/2010
Old Dominion University
Department of Computer Science
CS 495/595 Spring 2010
Martin Klein <[email protected]>
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:
– email the class list
– mimic the behavior of a well known Apache server
(e.g., www.cs.odu.edu)
Methods to Support
• Same as assignments 1 & 2
Status Codes to Support
• Same as assignments 1 & 2, plus:
– 300 Multiple Choice
• use if there are > 1 possible representations
• provide html list for a user to pick from
– 406 Not Acceptable
• use if there are no possible representations that
match the requested q values
Request Headers
• Same as assignments 1 & 2
• and add:
–
–
–
–
–
–
–
Accept
Accept-Charset
Accept-Encoding
Accept-Language
User-Agent
Referer
Negotiate
Response Headers
• Same as assignments 1 & 2, but add:
–
–
–
–
–
–
–
Vary
Content-Language
Content-Location
Content-Encoding
“Transfer-Encoding: chunked”
Alternates
TCN
• Modified
– Content-type
• add charset after type if not ISO-8859-1 (ASCII)
– see week 8 slides for examples
MIME Types
• Same as assignment #1
Encoding Types
• compress, gzip, deflate, identity, chunked
– (see week 7 lecture)
Further Guidance
• Use “chunked” transfer encoding for any
dynamically generated server response
– i.e., directory listings and 3xx, 4xx, 5xx html snippets
– use 2 lines as the “chunk”
• Use these language encodings
– en, es, de, ja, ko, ru
• Use these non-ASCII charset encodings
– “.jis” -> “iso-2022-jp”
– “koi8-r” -> “koi8-r”
– “euc-kr” -> “euc-kr”
Further Guidance
• Build “Vary” response header as:
Vary: negotiate, header1, header2, …, headerN
• use the “Vary” header only if content negotiation has been
performed
• No “default” q values in content negotiation
– remember: content negotiation only happens if the
request would have generated a 404 without content
negotiation
• Generate structured ETags on selected
representation as per RFC-2295 (section 9.2)
Status Code Definition
• Generate a 200:
– if there is only a single representation as a result of
Accept headers and q values
• Generate a 300:
– if there are multiple representations that “tie” in q
values OR the client sends a “Negotiate: 1.0” request
header
– generate an HTML list showing possible options
• Generate a 406:
– if no representations are suitable given Accept headers
and q values
– generate an HTML list showing closest options
302 Redirection
#
# Incoming RE
302 URI
# (this overwrites the redirection from A2)
#
^(.*)/galaxie(.*)
$1/fairlane$2
Keep in mind:
Status report in 2 weeks!
START
NOW!!!