- From: Scott Lawrence <lawrence@agranat.com>
- Date: Mon, 05 Jan 1998 10:48:18 -0500
- To: HTTP Working Group <http-wg%cuckoo.hpl.hp.com@hplb.hpl.hp.com>
In the course of our interoperability testing, we have found that many browsers ignore the Content-Base header field (see http://test11.agranat.com/basetest/). The spec now reads: ================ 14.11 Content-Base The Content-Base entity-header field may be used to specify the base URI for resolving relative URLs within the entity. Content-Base = "Content-Base" ":" absoluteURI If no Content-Base field is present, the base URI of an entity is defined either by its Content-Location (if that Content-Location URI is an absolute URI) or the URI used to initiate the request, in that order of precedence. Note, however, that the base URI of the contents within the entity-body may be redefined within that entity-body. ================ To get the proposal in at the front, I would like to see this changed to require that this header field be used if present: ================ The Content-Base entity-header field may be used by a server to specify the base URI for resolving relative URLs within the entity. Content-Base = "Content-Base" ":" absoluteURI If the Content-Base header field is present, clients MUST use its value as the base URI of the response entity unless it is overridden within the entity-body. If the base is not defined within the entity body and no Content-Base is present, the base URI is defined either by its Content-Location (if that Content-Location URI is an absolute URI) or the URI used to initiate the request, in that order of precedence. ================ This is consistent with the idea of 'nested' definition of the base URI as described in RFC 1808 "Relative Uniform Resource Locators" (which is already referenced from the HTTP/1.1 spec). This is very useful to the origin server and content author; it provides a mechanism for providing the base value in a number of situations: - When the request URL is not the base for the response ( http://server.co.xx/cgi-bin/search ); in some cases, the response may not have a location that could be retrieved otherwise, so that it may be inappropriate to send a Content-Location. - When the request URL uses extra information in the path (as in the CGI PATH_INFO mechanism): http://server.co.xx/foobar/param1/param2 where http://server.co.xx/foobar is the real entity and param1 and param2 are inputs to it encoded as path components. - When the Content-Location is being used to identify a negotiated variant, but relative links within the entity are the same for all variants ( /foo/en/welcome.html and /foo/fr/welcome.html both contain relative links to /foo/... ). It is true that if the entity returned is HTML then it can include a BASE tag, but this means that the content author must know the absoluteURI where the content is installed, and that information must be either generated dynamically for each request or globally changed when the content is moved (problematic for replicated sites, for example). If we decide not to add the proposed normative requirement, then I suggest that it would be better to strike the Content-Base mechanism from the spec altogether; as it stands now it appears to provide a mechanism for solving a common content-author problem, but it will not work uniformly enough to be actually useful (if the author must do something else to get the base correct for clients that ignore Content-Base, then sending it at all is a waste of bytes). -- Scott Lawrence EmWeb Embedded Server <lawrence@agranat.com> Agranat Systems, Inc. Engineering http://www.agranat.com/
Received on Monday, 5 January 1998 09:58:56 UTC