当我执行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):
我可以避免这种确认吗?
答案 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请求不应该修改状态,因此被认为是“安全”重新提交。