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? 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?) John -
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 )
John Kipling Lewis wrote at 2003-5-24 10:30 -0400:
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?
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?)
You must provide cache control headers. There is a HowTo about cache control. Alteratively, you can read the HTTP 1.1 specification. Dieter
participants (3)
-
Dieter Maurer -
John Kipling Lewis -
Tino Wildenhain