I found no reference to base href in the document. I don't set it and I don't see that ZOPE/CMF sets it either.
Zope should insert it if it isn't there and the page is recognized as HTML. Or al least, so says the source. Perhaps you should try to set it. I think REQUEST.URL1 or absolute_url should work for a value. Check the HTML source of zope.org to see one.
here's the ZPT code that's generating the urls for the items
<ul> <li tal:repeat="item items"> <a href="item_url" tal:attributes="href item/absolute_url"><img align="middle" border="0" tal:attributes="src string:${item/portal_url}/${item/getIcon}; alt string:${item/Type}; title string:${item/Type}"></a> <a href="item_url" tal:attributes="href item/absolute_url; title item/Description" tal:content="item/Title"> Title </a> </li> </ul>
both absolute_url and portal_url when called within the frameset appear to get a reference to the parent frameset's host instead of the document's host. Are there other mechanisms in place to get the host name:port for a document?
I'm pretty sure those should work with ports. How does this render? --jcc