> On Mar 15, 2017, at 1:20 AM, Ilya Skriblovsky <ilyaskriblov...@gmail.com> 
> wrote:
> 
> Ok, so in the sort term you are suggesting to change Request.URLPath

Yes.

> (uppercased method? Hmm)

Like I said, not a great interface, overall :-).

> to use Host header instead of getRequestHostname and to change Klein to use 
> it instead of Request.getHost(), right?
> Sounds wise and reasonable :)

OK, glad you agree :).

> But I'd like to add one more thing. In order to build correct external URL we 
> need to know is it http or https. Currently URLPath is using 
> Request.isSecure(), but it is not sufficient since Request.isSecure() just 
> checks if backend connection is SSL while encryption is often terminated at a 
> reverse proxy. Can we add "useXForwardedProto=False" argument to 
> Request.URLPath() and check X-Forwarded-Proto header if it is true? And may 
> be add "useXForwardedHost=False" too to simplify setting up a reverse proxy 
> (with a bold red warning in docstring that it can be set to True only if 
> reverse proxy is correctly configured to drop corresponding client-specified 
> headers). What do you think?

I think that for starters, it would make more sense to just fix it to always 
honor forwarded-for and x-forwarded-for headers.  The code calling 
request.URLPath(), in a given Resource, or application, is highly unlikely to 
know whether it wants to honor (x-)forwarded-for.  The code that might know 
about this sort of configuration would be the thing that constructs the Site 
object, but I'd be much happier to just get a change that always honors it 
first, and then figure out how to customize it later.

-glyph

_______________________________________________
Twisted-web mailing list
Twisted-web@twistedmatrix.com
http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-web

Reply via email to