Christoph Zwerschke a écrit :
> sophana wrote:
>> I've just found out that request().serverURL() does not return the real
>> PATH of the request.
>> It replaces the http host with the server name configured in apache.
>> Is this the intended behaviour?
>> I can't use this, because the session is lost when returning to another url.
> Actually serverURL() normally constructs the URI using HTTP_HOST which
> is the hostname given by the client, not the one configured in Apache,
> i.e. it does the same as your requestURL() method.
> However, if SCRIPT_URI is available (i.e. when the rewrite engine is on,
> as seems to be in your case), then this value is used, and the problem
> seems to be that this value uses the canonical server name configured in
> Apache, not the one used by the client in the request.
Yes I have a rewrite rule, but the rule does not apply in this case.
This may explain that I don't get the expected result.
What I don't understand is that, even if the url was rewritten, the
result is simply wrong... The apache name must not be used.
> My suggestion is to add a boolean parameter "canonical" to the
> serverURL() method which will cause SCRIPT_URI to be ignored if set to
> False, and we can set canonical=False by default.
>> def isSecure(self):
>> return self.request().serverDictionary().get('HTTPS',None) == 'on'
> Right, we should really define isSecure like that in HTTPRequest.
>> def requestURL(self):
>> if self.isSecure():
>> return url
> This does the same as serverURL() except for checking SCRIPT_URI, right?
I wouldn't have written that if the result was the same... ;-)