2012-05-21 111 views
0

我正在使用Post Get重定向方法使用asp.net webforms提交表单。这是一个非常简单的设置:ASP.NET Post获取重定向浏览器历史记录问题

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和重定向你马上回Page3.aspx。这会减少您重新访问Page1.aspx并再次提交数据的机会。

相反,当我点击后退按钮时,我被直接带回Page1.aspx。我也尝试过使用303重定向,但这也不起作用。

这里可能会发生什么?

回答

0

你所看到的行为是正确的。

各种浏览器,为了更好地支持一些网站(如谷歌)如何运作,不保留在后面的历史记录中立即重定向的页面。

考虑一下:

  1. 您搜索google.com
  2. 你点击一个链接
  3. 在这个环节其实需要你回到google.coms服务器立即转发你的实际页面之前。

  4. 您认为这不是正确的链接,并单击后退按钮。

在这一点上,大多数浏览器将带你回到上确定步骤2中的页面这是数以百万计网民的正常期望和预期的行为。

要回到步骤3只转发到步骤4,会让一些人失望。由于某些版本的IE最近做了修改,直到行为被修补。

问题是,你所看到的行为究竟是如何工作的其余网络。如果你真的想要的话,你应该研究一些其他机制来改变这一点。

更新


@NinjaBomb:不知怎的,我错过了你的跟进问题,所以下面可能是没有多大用处。

答案是,不是在c#代码中做重定向,而是在page2中嵌入了一些javascript,在页面加载完成时进行重定向。浏览器然后“存储”页面2的引用。当他们从3点击后退按钮时,它将返回到2,然后重定向到3.

当然,用户可以简单地按下后退按钮两次。 。打断2的重定向并让他们转到1.我能想到的唯一的另一种方式是让页面1在加载时测试一些会话或cookie值,看看它们是否已经发送。如果是这样,那么第1页应该做一个重定向而不是显示自己。

+0

然后问题就变成了:我们如何强制浏览器保持历史中的重定向页面?就我而言,我认为这是有道理的。 – NinjaBomb