Question about the base href that Zope adds automatically
Hello Zopistas, can anyone explain me why zope always adds the <base href="http://my.server.com/" /> to every HTML file it's serving. What's the purpose of this, and is it really necessary? By the way, is there an easy way to get rid of this if it's not necessary? Cheers, Pieter
Pieter Claerhout wrote:
can anyone explain me why zope always adds the <base href="http://my.server.com/" /> to every HTML file it's serving. What's the purpose of this, and is it really necessary?
It's a sucky cludge to solve quite a tricky problem because no-one can afford the time to get their head around it ;-)
By the way, is there an easy way to get rid of this if it's not necessary?
Put your own <base> in your header, but, be warned, it'll bite you at some point ;-) cheers, Chris
can anyone explain me why zope always adds the <base href="http://my.server.com/" /> to every HTML file it's serving. What's the purpose of this, and is it really necessary?
It's because when a browser accesses http://host/folder and http://host/folder/ your browser should understand the relative URL within your documents. Without the basehref, your browser will think that http://host/folder is a html-file, and prepend http://host/ to relative URLs. It will however understand that http://host/folder/ is a folder, and prepend http://host/folder/ to relative URLs there. So depending on the trailing slash, you might get different results.
By the way, is there an easy way to get rid of this if it's not necessary?
Put in your own, or edit python/ZPublisher/HTTPResponse.py if you *really* want to get rid of it. -jf
At 12:30 08/11/2001 +0100, Jan-Frode Myklebust wrote:
can anyone explain me why zope always adds the <base href="http://my.server.com/" /> to every HTML file it's serving. What's the purpose of this, and is it really necessary?
It's because when a browser accesses http://host/folder and http://host/folder/ your browser should understand the relative URL within your documents.
Without the basehref, your browser will think that http://host/folder is a html-file, and prepend http://host/ to relative URLs. It will however understand that http://host/folder/ is a folder, and prepend http://host/folder/ to relative URLs there. So depending on the trailing slash, you might get different results.
While the explanation is correct it is arguable that Zope is wrong in resolving the problem in this way. If you look at Apache's behaviour, a request for http://host/folder yields a 301 Moved Permanently response redirecting the browser to http://host/folder/. The browser then has to make a second request for http://host/folder/ which is satisfied. The fact that this second request usually yields the contents of http://host/folder/index.html (or whatever file is specified by Apache's DirectoryIndex directive) is OK as applying relative URLs to page URLs like http://host/folder/ and http://host/folder/index.html gives the same result. The problem is that Zope is treating http://host/folder and http://host/folder/ as being equivalent absolute URLs, when they are not from a URL parsing/joining standpoint, and is circumventing the problem this creates by inserting a <base> tag into the response. There is an argument for saying that Zope should be modified so that if the requested URL does not end in a '/' and the object it then address is derived from ObjectManager, it should redirect the browser to the requested URL + '/'. That said, if you insert your own <base> tag in a page, Zope doesn't mess with it, and you are going to get the results you should expect, i.e. the browser will interpret the relative URLs on the page with respect to the base URL you specified rather than the one that Zope would have supplied, this latter being the URL for the directory from which the page was served.
By the way, is there an easy way to get rid of this if it's not necessary?
Put in your own, or edit python/ZPublisher/HTTPResponse.py if you *really* want to get rid of it.
-jf
_______________________________________________ Zope maillist - Zope@zope.org http://lists.zope.org/mailman/listinfo/zope ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope-dev )
participants (4)
-
Chris Withers -
Jan-Frode Myklebust -
Pieter Claerhout -
Richard Barrett