Chrome 现在一天比一天糟糕。我有一个 ASP.NET 应用程序。当用户执行 POST 操作时。然后他单击一个链接(GET 操作)。然后单击浏览器后退按钮。 Chrome 再次执行 POST 操作。在任何其他浏览器中都没有问题。这是一个任何人都可以确认的例子。只需单击 POST 按钮,然后单击 GET 链接,然后单击返回按钮。创建 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
最佳答案
通过后操作的重定向进行响应通常是一种很好的做法:
- 浏览器 POST 表单:返回带有位置 X 的 HTTP/302
- 浏览器 GET X:提供页面 X
- 浏览器重新加载现在将执行 GET X
就像这样,当重新加载该页面时,将再次提供该页面,而无需再次尝试发布表单。
这可能也解决了您遇到的 Chrome 错误问题。
关于asp.net - 当我点击后退按钮时,Chrome 提交表单时不显示任何弹出通知?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18764137/