[Zope] (no subject)

Tino Wildenhain tino@wildenhain.de
Sat, 24 May 2003 20:34:49 +0200


Hi,

John Kipling Lewis wrote:
> Calling a function, which deletes an element of a list, from a hyperlink
> and returning a display page from that function.  The URL in the browser
> address bar shows the the call to the function (and passed variables).
> How do you change the returned URL so that the display page shows the
> changes?

The server does not return URL information. It only returns the content
of what the URL points to. If you click a link in a page, your
browser uses its recorded information of the pages URL, adds to this
the link you click and put it into the address-line, then it connects
to the server and waits for response.

If the server however sends a REDIRECT response, in the header of
the answer is a "location" line which points to the new URL.
The browser often is so kindly to automatically copy this URL
to the address-line and make a new connect.

IF you use this to modify the URL, it can only be modified after
the server has answered, this means the URL in the address-line
while the browser is waiting will contain your variables and stuff.

Until you use POST method for your form or hide the true page
in a frame set, there is nothing you can do against this.

(Otoh - why should you? Ok, having nice URLs is a great idea,
but if you want to do it for "security" - forget it. All whats
sent by the browser is visible for the user)



> 
> We tried RESPONSE.redirect(foo) and that worked except the display page
> didn't show the changes that had been made.  The browser didn't reload the
> page (perhaps assuming it was not changed and used the cached version?)

This is another thing; first you have to mark your page "expired"
when it first appears.
For example you can use:

response.setHeader("Cache-Control", "no-cache")
response.setHeader("Expires",(DateTime()-1).rfc822())

Which tells browsers and downstream-proxies that the page
is already 1 day outdated.

Done that and it does not help? Say thank you to brain dead
browser manufacturers which set defaults to ignore servers
information about life time of a resource. You can change
this for your browser, but dont expect it to be changed
by every of your users.

HTH
Tino Wildenhain

PS: for references, see http://www.faqs.org
under http://www.faqs.org/rfcs/rfc2616.html



> 
> John -
> 
> 
> _______________________________________________
> Zope maillist  -  Zope@zope.org
> http://mail.zope.org/mailman/listinfo/zope
> **   No cross posts or HTML encoding!  **
> (Related lists - 
>  http://mail.zope.org/mailman/listinfo/zope-announce
>  http://mail.zope.org/mailman/listinfo/zope-dev )
>