685a4f6846c4097586e732ceee52a806.ppt
- Количество слайдов: 15
Web Server Design Assignment #3: Transfer Encoding & Content Negotiation Old Dominion University Department of Computer Science CS 495/595 Spring 2012 Michael L. Nelson <mln@cs. odu. edu>
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 person 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: – 206 Partial Content – 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 – 416 Requested Range Not Satisfiable
Note: I'll be testing 403 • Via sudo, I'm going to remove the read permissions on one of your files on mlnweb. cs. odu. edu
Request Headers • Same as assignments 1 & 2 • Add: – – – – Accept-Charset Accept-Encoding Accept-Language Negotiate Range User-Agent Referer • (note: we won't do TE: )
Response Headers • • Same as assignments 1 & 2, but add: – Vary – Content-Language – Content-Location – Content-Encoding – “Transfer-Encoding: chunked” – Alternates – TCN – Accept-Range – Content-Range Modified – Content-type • add charset after type if not ISO-8859 -1 (ASCII) – see week 8 slides for example
MIME Types • Same as assignment #1
Encoding Types • compress, gzip, deflate, identity, chunked – (see week 8 lecture) • Use “chunked” transfer encoding for any dynamically generated server response – i. e. , directory listings and 3 xx, 4 xx, 5 xx html snippets – use 2 lines as the “chunk”
Further Guidance • Support/advertise partial GET capability for all resources/responses for which you don't use Transfer-Encoding: chunked – i. e. : representation == files on the file system • Use these language encodings – en, es, de, ja, ko, ru • Use these non-ASCII charset encodings – “. jis” -> “iso-2022 -jp” – “koi 8 -r” -> “koi 8 -r” – “euc-kr” -> “euc-kr”
Further Guidance • Build “Vary” response header as: Vary: negotiate, header 1, header 2, …, header. N • 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
Redirections • Delete the previous 302 redirections • Add the 301 redirections on the next page:
301 Redirection # # Incoming RE # 301 URI ^(. *)/dj-shadow/(. *) ^/wsdl/$ ^(. *)/3/(. *) http: //djshadow. com/ http: //ws-dl. blogspot. com/ $1/4/directory 3 isempty
Combined Log Format • Basically, add Referer: and User-Agent: fields: – "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-agent}i"" – http: //httpd. apache. org/docs/current/mod_log_config. html
685a4f6846c4097586e732ceee52a806.ppt