刷新前回发导致浏览器确认(F5)

时间:2014-05-14 14:19:00

标签: c# asp.net postback

当我执行postback时,为什么浏览器在刷新之前总是问我确认? (F5 / CTRL + F5)

我的代码非常简单(我使用母版页):

的.aspx

...
<asp:button runat="server" ClientIDMode="static" type="button" id="btnlogin" 
                  OnClientClick="return veriflogin();" class="btn btn-primary" Text="Valider" 
                  onclick="btnlogin_Click"></asp:button>

<asp:Label ID="ok" runat="server" Visible="false" Text="allright"></asp:Label>
...

的.cs

protected void btnlogin_Click(object sender, EventArgs e)
{
    ok.Visible = true;
}

确认(IE):

enter image description here

我可以避免这种确认吗?

2 个答案:

答案 0 :(得分:1)

使用POST HTTP动词进行回发(顾名思义)。 POST by definition is not idempotent,因此重复相同的请求并不一定安全。换句话说,重复POST可能导致与执行一次不同的最终结果。因此,浏览器会警告您,为了再次检索页面,它必须重复POST操作,这可能会产生意想不到的后果。

例如,在RESTful applications中,POST暗示&#34;创建&#34; (如在CRUD中,类似于SQL INSERT)资源。执行POST两次意味着将创建两个资源实例而不是一个。将它与作为读操作的GET进行比较,并且多次读取同一资源不会影响资源的状态,因此被认为是安全的(因为GET是幂等的)< / p>

答案 1 :(得分:0)

不,你无法避免确认。

如果您在网站上的最后一次操作是POST,则大多数浏览器会要求确认您是否要再次使用相同的POST刷新网站。这是预期的行为。

POST请求旨在以某种方式修改状态。这就是您的浏览器警告您的原因。 GET请求不应该修改状态,因此被认为是“安全”重新提交。