On 8/9/09 8:16 AM, Martin Aspeli wrote:
> Hi,
>
> I've been debugging some weirdness with deliverance 0.3 in front of
> repoze.vhm and the vhm_xhosts middleware, which specifically happens
> when the VHM host has a port in it (e.g. localhost:8000).
>
> Basically, Deliverance uses webob.Request, and in particular its 'url'
> property to construct some URLs. After repoze.vhm does its thing, the
> URL loses the port part.
>
> It seems that before repoze.vhm kicks in, environ['HTTP_HOST'] is e.g.
> 'localhost:8000'. Afterwards, it's just 'localhost'.
>
> This is done here, in middleware.py:
>
>               environ['SERVER_NAME'] = host
>               environ['HTTP_HOST'] = host
>               environ['SERVER_PORT'] = port
>               environ['SCRIPT_NAME'] = path
>
> If I change this to the following, the url comes through correctly in
> webob.Request:
>
>               environ['SERVER_NAME'] = host
>               environ['HTTP_HOST'] = "%s:%s" % (host, port,)
>               environ['SERVER_PORT'] = port
>               environ['SCRIPT_NAME'] = path
>
> Would it be OK to change repoze.vhm to do this (and get a new release)?
> Or is there something more sinister going on?
>
> Martin
>
>

I don't know quite how to read the spec here:

http://www.freesoft.org/CIE/RFC/2068/184.htm

In particular, I'm not sure if we should strip the port out of the hostname if 
the default port for the scheme is used.  It doesn't say MUST around that 
description, so I'd assume not.  On the other hand, Firefox doesn't tack the 
port number on for either https or http requests, so it might be a good idea to 
follow that lead.  But delta that, yeah.  For non-standard ports, the VHM 
should 
put the port in the http_host envvar.

- C



_______________________________________________
Repoze-dev mailing list
Repoze-dev@lists.repoze.org
http://lists.repoze.org/listinfo/repoze-dev

Reply via email to