Niphlod- Thanks, you're correct- that's exactly what's happening.
We should then update the *requires_https()* implementation:
*gluon/globals.py:*
def requires_https(self):
"""
If request comes in over HTTP, redirect it to HTTPS
and secure the session.
"""
if not global_settings.cronjob and not self.is_https:
session.forget()
redirect(URL(scheme='https', args=self.args, vars=self.vars))
current.session.secure()
On Monday, October 1, 2012 4:34:26 PM UTC-4, Niphlod wrote:
>
> groan, I posted something and it doesn't show up: apologies for double
> posting if the previous one shows up in a few....
>
> The "issue" is that you are not session.forget()ting the requests going to
> the http realm: what you are doing is overriding the cookie before
> redirecting.
>
> Both the browser and web2py behave consistently. Case without
> session.forget():
> 1. https://something
> - browser: none
> - web2py: set-cookie abcd secure
> 2. https://something
> - browser: abcd
> - web2py: set-cookie abcd secure
> 3. http://something
> - browser: none ("I must not send a secured cookie back to the domain
> without https")
> - web2py: location https://something, set-cookie defg ("User is new
> around here, let's create a new session")
> 4. https://something
> - browser: defg ("I can send the cookie I received before because it
> was not secured")
> - web2py: set-cookie defg secure
>
> When you set session.forget() for the http realm, all goes well:
> 1. https://something
> - browser: none
> - web2py: set-cookie abcd secure
> 2. https://something
> - browser: abcd
> - web2py: set-cookie abcd secure
> 3. http://something
> - browser: none
> - web2py: location https://something
> 4. https://something
> - browser: abcd ("No new cookies were issued, so I use the one set
> before, it's a https request with a secured cookie, send abcd back")
> - web2py: set-cookie abcd secure
>
> PS: the issue presents itself only if you do redirections within web2py
> without session.forget()... a normal webserver issues only the
> *Location*header and sets no cookies when set to redirect something, so it
> behaves
> "more correctly" and exactly like web2py with session.forget() enabled.
>
>
--