Bernhard Huber wrote:

> Okay, nice list of headers to set.
> 
> Who sets what?
> What is already answered by you.
> 
> Who:


.5) HTTP Server


> 1) ServletEngine
> 2) Cocoon
> 2.1) CocoonReader
> 2.2) CocoonSerializer
> 2.3) CocoonGenerators


2.4) CocoonMRUStore (cache implementation)
2.5) CocoonServlet
2.6) CocoonAction


> I think that the ServletEngine won't set any headers, will reread the 
> servlet-spec...


There are some set by the HTTP server which may or may not be the
servlet engine.

Out of our control
------------------
Location: ServletEngine (Response.redirectTo())
Server: HTTP Server (can also be added to by Cocoon possibly?)
WWW-Authenticate: ServletEngine (Basic Authentication mechanism)
Proxy-Authenticate: HTTP Server
Content-Encoding: HTTP Server (unless implemented by us)

Our responsibility
------------------
Age: CocoonMRUStore
Vary: CocoonMRUStore/CocoonAction
Retry-After: CocoonServlet (during init time)
Content-Language: CocoonAction/CocoonGenerator/CocoonReader (i18n)
Content-Length: CocoonReader/CocoonMRUStore (only one where we know ahead of time)
Content-Location: CocoonServlet (repeat of the requested URI)
Content-MD5: CocoonReader/CocoonMRUStore (only one where we know ahead of 
time)--optional
Content-Type: CocoonSerializer
Expires: CocoonMRUStore
Last-Modified: CocoonMRUStore
Allow: CocoonAction/Sitemap?

Unknown responsibility
----------------------
Accept-Ranges
Content-Range
ETag


> 
> I have not dived into Cocoon to understand 100% contracts for 
> serializer, and generators, and
> if they are allowed to set the http-headers.
> 
> But probably it's not the task of the serializer to set the http-headers.
> Thus the http-headers should be set be Cocoon-Servlet after the request 
> is handled.
> Is this right?
> 
> I will take a look at Cocoon-1 implementation.
> 
> Berin Loritsch wrote:
> 
>> Bernhard Huber wrote:
>>
>>> Perhaps setting always a LastModifiedHeader will help too.
>>
>>
>>
>> This is one thing that Cocoon may want to include no matter what.  
>> Here are the list of
>> valid HTTP 1.1 Headers for responses:
>>
>> Accept-Ranges
>> Age
>> ETag
>> Location
>> Proxy-Authenticate
>> Retry-After
>> Server
>> Vary
>> WWW-Authenticate
>>
>> Brief overview for those who don't know:
>>
>> Accept-Ranges: {bytes|none}
>> Allows the server to indicate it's acceptance of range requests for a 
>> resource.  Probably
>> not something we want to support at this time, so Cocoon should set 
>> this header to none
>> all the time.
>>
>> Age: {seconds}
>> Allows the server to convey the number of seconds since the response 
>> (or revalidation)
>> was generated by the origin server.  This is used for cache-generated 
>> responses.  In
>> essence, the Caching mechanism must set this header.
>>
>> ETag: {xyzzy|W/xyzzy|}
>> This has to do with Entity Tags, which I don't fully understand.  If a 
>> developer understands
>> it and can use it, then they can implement it.
>>
>> Location: {absoluteURI}
>> This is the redirect header--handled by the Redirector in Cocoon.
>>
>> Proxy-Authenticate: {challenge}
>> this is used in conjunction with a 407 Proxy Authentication Required 
>> response.
>>
>> Retry-After: {HTTP date|seconds}
>> This is used in conjunction with a 503 service unavailable response.  
>> We can use this when
>> we are compiling the initial sitemap and we receive requests.
>>
>> Server: {product|comment}
>> This is usually used by the official web server, and it might be 
>> augmented to advertise
>> Cocoon....
>>
>> Vary: {*|field-name}
>> The server should include this header with any cacheable responce that 
>> is subject to
>> server driven negotiation.  Basically, it tells the client that the 
>> resource will only
>> vary on the list of field names in a POST message.
>>
>> WWW-Authenticate: {challenge}
>> This MUST be included with the 401 Unauthorized message--usually taken 
>> care of by the
>> servlet container.
>>
>>
>> Beyond this, we have the Entity Header fields.  These are used for 
>> BOTH requests and response
>> messages.  These are:
>>
>> Allow
>> Content-Encoding
>> Content-Language
>> Content-Length
>> Content-Location
>> Content-MD5
>> Content-Range
>> Content-Type
>> Expires
>> Last-Modified
>>
>> Again, the quick definitions of these headers are:
>>
>> Allow: {GET|HEAD|PUT|http method type}
>> Used to specify the types of methods allowable for a resource.  Must 
>> be present with
>> the 405 Method Not Allowed response.  This is useful for forcing POST 
>> instead of GET
>> methods for forms, etc.  Again, not something Cocoon needs to do out 
>> of the gate.
>>
>> Content-Encoding: {content coding}
>> Used when additional encoding has been performed (like gzip) on the 
>> resource.  After
>> applying the proper decoding, the resource is the same as identified 
>> by the Content-Type
>> message.
>>
>> Content-Language: {2 char language code}
>> Used to specify if the resource is specific to a locale.  If this is 
>> omitted, the content
>> is intended for all languages.  This can be a comma separated list.  
>> Remember, this can
>> be both request/response.  We can use this clue if we want to do 
>> internationalization
>> based on the HTTP header.
>>
>> Content-MD5: {base64 encoding of 128 bit MD5 digest}
>> If the content is static, this could be useful to ensure the received 
>> document is valid
>> and has not been corrupted in transit.
>>
>> Content-Range: {byte unit} 
>> {first-byte-pos}-{last-byte-pos}/{instance-length|*}
>> Used for only downloading a range of bytes (useful for reducing 
>> traffic on the net).
>>
>> Content-Type: {mime-type}
>> We all know this one.  Cocoon SHOULD set this _allways_.
>>
>> Expires: {http date}
>> Specifies when a resource expires (absolute date).  Used to help proxy 
>> and client cache
>> implementations.  For resources that do not cache, it should be set to 
>> the same value as
>> the Date header.
>>
>> Last-Modified: {http date}
>> Specifies the absolute date/time when the resource was last changed.  
>> Used to help proxy
>> and client cache implementaitons.  This should be set by the Cache 
>> mechanism.
> 
> 
> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, email: [EMAIL PROTECTED]
> 
> .
> 



-- 

"Those who would trade liberty for
  temporary security deserve neither"
                 - Benjamin Franklin


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]

Reply via email to