1

我们有一个 POST 到 PL/SQL 数据库过程,它 (a) 基于 POST 参数执行一些数据库操作,并且 (b) 将用户重定向到显示结果的页面。

问题是,当用户对结果页面进行浏览器“刷新”时,仍然有原始请求,所以它调用数据库过程并重新发送参数。

我们可以通过保存状态来做一些事情,这样如果再次发送请求,就不会发生坏事。但这让我想知道。

有没有办法告诉浏览器将 url 设置为重定向调用,而不是原始用户请求?这可能在重定向本身中,或者在目标页面上的 Javascript 中。

4

2 回答 2

1

The canonical solution is described pretty well on Wikipedia. See Post/Redirect/Get. You want the code that's handling the POST to redirect to a GET when it's work is done, as refreshing a GET will not resubmit form data.

于 2008-10-27T17:20:53.500 回答
1

您没有提及您使用什么来提供页面,但请确保您执行外部重定向。某些平台将在站点内进行内部重定向。

例如,对于 Apache HTTP Server,您需要在 mod_rewrite 中指定 force-redirect 标志:http ://httpd.apache.org/docs/1.3/mod/mod_rewrite.html#RewriteRule

这里的第 4 个响应对此也有很好的解释。

于 2008-10-27T15:46:41.270 回答