[Zope] Help with session data and redirects
Chris McDonough
chrism@zope.com
15 Apr 2003 11:18:39 -0400
Under Mozilla 1.3 on Linux, when running your test (e.g. when visiting
/createSessionAndRedirect?sessionText=456), I immediately get:
## Page Template "view_session_obj.pt" ##
456
Like you, I suspect this may be a browser issue.
To verify, cause the createSessionAndRedirect to generate a "random"
query string like this:
session = context.REQUEST.SESSION
sessionObjName = 'redirectTest'
session.set(sessionObjName, sessionText)
return
context.REQUEST.RESPONSE.redirect(context["view_session_obj.pt"].absolute_url() + '?abc=%s' % context.ZopeTime().timeTime())
This should prevent browsers from returning a cached page. A more
permanent solution would be to set a Pragma: No-Cache or Cache-Control:
No-Cache HTTP header within "view_session_obj.pt".
- C
On Tue, 2003-04-15 at 10:58, Brad Powell wrote:
> I have a problem where session data does not appear to be updated when the
> setting of the session data is followed by a response.redirect in a Python
> script. A browser refresh is required to get the correct data displayed.
> This happens on both Zope v2.5.1 and v2.6.1. It also happens with IE and
> Mozilla browsers; but, interestingly, it does not occur with the Konqueror
> browser. This led me to believe it was a browser issue, but no matter
> what options I try in IE, I cannot get it to work. I thought it might be
> an issue with the browser cache settings, but, again, no matter what I try
> I get the same result.
>
> I've included a test script and page template that demonstrates this
> problem. When I go to url "sessionCreateAndRedirect?sessionText=123", I
> get the message, "Problem: no session object (redirectTest)." If I then
> refresh the browser, I get "123" displayed, which is the correct response.
> Subsequent calls to the url with different values for sessionText returns
> the previous session value, until I do a browser refresh.
>
> Any assistance, guidance, wisdom, etc. on this matter would be greatly
> appreciated.
>
>
> ## Script (Python) "sessionCreateAndRedirect"
> ##parameters=sessionText
> ##
> session = context.REQUEST.SESSION
> sessionObjName = 'redirectTest'
> session.set(sessionObjName, sessionText)
> return
> context.REQUEST.RESPONSE.redirect(context["view_session_obj.pt"].absolute_url())
>
> ## Page Template "view_session_obj.pt"
> ##
> <html>
> <head>
> <title tal:content="template/title">The title</title>
> </head>
> <body>
> <tal:block define="global sesObj request/SESSION/redirectTest |
> nothing"></tal:block>
> <p tal:condition="not:sesObj">Problem: no session object
> (redirectTest).</p>
> <p tal:condition="sesObj" tal:content="sesObj">session obj
> contents</p>
> </body>
> </html>
>
>
> Brad