繁体   English   中英

ASP.NET发布获取重定向浏览器历史记录问题

[英]ASP.NET Post Get Redirect Browser History Issue

我正在使用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,然后将您重定向回到Page3.aspx。 这将减少您回到Page1.aspx并再次提交数据的机会。

相反,当我按下“后退”按钮时,我被直接带回到了Page1.aspx。 我也尝试过使用303重定向,但是那也不起作用。

这可能是怎么回事?

您看到的行为是正确的做法。

为了更好地支持某些网站(例如Google)的运行方式,各种浏览器都不会保留在后退历史记录中立即重定向的页面。

考虑一下:

  1. 您搜索google.com
  2. 您单击一个链接
  3. 实际上,此链接会将您带回到google.coms服务器,然后立即将您转到实际页面。

  4. 您确定那不是正确的链接,然后单击“后退”按钮。

此时,大多数浏览器会将您带回到步骤2所标识的页面。这是数百万网民的正常期望行为。

回到第3步,而仅将其转发到第4步,那会惹恼一些人。 就像某些版本的IE最近一样,直到该行为得到修补。

重点是,您看到的行为正是网络其余部分的工作方式。 如果您确实愿意,您应该研究其他机制来改变这一点。

更新


@NinjaBomb:不知何故我错过了您的后续问题,因此以下内容可能用处不大。

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

当然,用户只需单击后退按钮两次...即可中断2的重定向并将其转到1。我能想到的另一种方法是让第1页处于加载状态,测试某些会话或cookie值以查看如果已经发送了。 如果是这样,则第1页应该进行重定向而不是显示自身。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM