我正在使用Post Get Redirect方法使用asp.net webforms提交表单。这是一个非常简单的设置:
Step 1) Post form on Page1.aspx
Step 2) Process form and redirect using Response.Redirect to Page2.aspx
Step 3) Page2.aspx redirects using Response.Redirect to Page3.aspx
如果您使用Page3.aspx并点击后退按钮,我认为它应该会将您带回Page2.aspx并将您重定向回Page 3.aspx。这将减少您返回Page1.aspx并再次提交数据的机会。
相反,当我按下后退按钮时,我会直接回到Page1.aspx。我也尝试使用303重定向,但这也不起作用。
这可能会发生什么?
答案 0 :(得分:0)
您所看到的行为是正确的。
各种浏览器,为了更好地支持某些网站(如谷歌)的运营方式,不会在后面的历史记录中保留重定向的网页。
考虑一下:
此链接实际上会将您转至google.coms服务器,然后立即转发到实际页面。
您认为这不是正确的链接,请点击后退按钮。
此时,大多数浏览器会将您带回到第2步中确定的页面。这是数百万网民通常所希望和预期的行为。
要回到第3步,只转发到第4步,好吧,会让一些人失望。正如IE的某些版本最近所做的那样,直到行为被修补。
重点是,您所看到的行为正是其余网络的运作方式。如果你真的想要,你应该研究一些其他机制来改变它。
更新
@NinjaBomb:不知怎的,我错过了你的后续问题,所以下面的内容可能没用多少。
答案是,不是在c#代码中进行重定向,而是在页面2中嵌入一些javascript,在页面加载完成时进行重定向。浏览器然后“存储”对第2页的引用。当他们从3点击后退按钮时,它将返回2然后重定向到3.
当然,用户只需按两次后退按钮...中断2的重定向并让它们转到1.我能想到的另一种方法是在加载时测试第1页,测试某些会话或cookie看看他们是否已被发送的价值。如果是这样,那么第1页应该重定向而不是显示自己。