【问题标题】:ASP.NET Post Get Redirect Browser History IssueASP.NET 发布获取重定向浏览器历史记录问题
【发布时间】:2012-05-21 21:31:06
【问题描述】:

我正在使用 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 重定向,但也没有用。

这里会发生什么?

【问题讨论】:

    标签: asp.net redirect webforms response.redirect


    【解决方案1】:

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

    各种浏览器,为了更好地支持某些网站(如 google)的操作方式,不会在返回历史记录中保留立即重定向的页面。

    考虑一下:

    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 页应该进行重定向而不是显示自己。

    【讨论】:

    • 那么问题就变成了:我们如何强制浏览器将重定向页面保留在历史记录中?就我而言,我认为这是有道理的。
    猜你喜欢
    • 2011-12-13
    • 2013-11-10
    • 2018-02-12
    • 2013-05-21
    • 2011-02-04
    • 2013-11-18
    • 2012-10-22
    • 2015-06-14
    • 2017-11-01
    相关资源
    最近更新 更多