2

Chrome 现在一天比一天糟糕。我有一个 ASP.NET 应用程序。当用户执行 POST 操作时。然后他单击一个链接(GET 操作)。然后单击浏览器返回按钮。Chrome 再次执行 POST 操作。在任何其他浏览器中都没有问题。这是一个任何人都可以确认的例子。只需单击 POST 按钮,然后单击 GET 链接,然后单击 Back 按钮。创建 2 个 WebForm 页面,

WebForm1.aspx

<%@ Page Language="C#" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <input type="submit" value="POST" />
        <a href="WebForm2.aspx">GET</a>
    </form>
    Http Details:
    <%= Request.HttpMethod %>
    <%= DateTime.Now %>
</body>
</html>

WebForm2.aspx

<%@ Page Language="C#" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <input type="submit" value="POST" />
        <a href="WebForm1.aspx">GET</a>
    </form>
    Http Details:
    <%= Request.HttpMethod %>
    <%= DateTime.Now %>
</body>
</html>

更新:我在上面添加了DateTime.Now。这是观察,

Open WebForm1.aspx
Http Details: GET 9/24/2013 11:43:10 AM

Click Post Button,
Http Details: POST 9/24/2013 11:43:35 AM

Click GET Button(The Browser will redirect you too WebForm2.aspx),
Http Details: GET 9/24/2013 11:43:46 AM

Click Browser Back Button(The Browser will show WebForm1.aspx in address bar)
Http Details: POST 9/24/2013 11:44:17 AM
4

2 回答 2

4

通过发布操作的重定向来响应通常是一种好习惯:

  1. 浏览器 POST 表单:返回带有位置 X 的 HTTP/302
  2. 浏览器 GETs X:服务页面 X
  3. 浏览器重新加载现在将执行 GET X

像这样,当重新加载该页面时,该页面将再次提供服务,而无需再次尝试发布表单。

这可能也解决了这个 Chrome 错误的问题。

于 2013-09-28T22:33:35.053 回答
1

这个问题仍然存在于铬。要了解此问题的状态,请查看此处。

https://code.google.com/p/chromium/issues/detail?id=263508

同时按照上面的答案尝试

于 2013-09-30T09:49:22.817 回答