[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