我们有一个PL / SQL数据库过程的POST,它(a)根据POST参数进行一些数据库操作,(b)将用户重定向到显示结果的页面。
问题是,当用户对浏览器“刷新”结果页面时,仍然有原始请求,因此它调用数据库过程并重新发送参数。
我们可以通过保存状态来执行这些操作,因此如果请求再次发送,则不会发生错误。但这让我感到疑惑。
有没有办法告诉浏览器将网址设置为重定向调用,而不是原始用户请求?这可能是重定向本身,也可能是目标页面上的Javascript。
答案 0 :(得分:1)
您没有提到您用于提供页面的内容,但请确保执行EXTERNAL重定向。某些平台将在网站内部重定向。
例如,对于Apache HTTP Server,您需要在mod_rewrite中指定force-redirect标志:http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html#RewriteRule
第4回应here对此也有不错的解释。
答案 1 :(得分:1)
在维基百科上很好地描述了规范解决方案。见Post/Redirect/Get。您希望处理POST的代码在完成工作时重定向到GET,因为刷新GET不会重新提交表单数据。