出于某种原因,Microsoft Edge(IE 10和9也经过测试)没有为我的某个应用程序设置域cookie。相同的代码似乎在其他浏览器上正常工作。我的代码可能有什么问题,或者我认为这与我的托管服务提供商设置有关?顺便说一下,我使用Plesk来托管我的应用程序。请参阅附带的Fiddler截图,包括Edge和Firefox。
边缘 - 登录屏幕 Edge - 未设置managerId的Cookie并且登录失败。
Firefox - 登录屏幕 FF - Cookies设置(全部3个)并登录成功。
更新:代码(裸骨结构)
<script type="text/javascript">
function onLoginSuccess() {
parent.window.location.href = '/Manager';
}
function validateLoginForm() {
var res = $('#frmLogin').valid();
if (res) {
$('#frmLogin').submit();
}
return false;
}
</script>
<form action="/Home/login" class="cd-form" data-ajax="true" data-ajax-method="POST" data-ajax-mode="replace" data-ajax-success="onLoginSuccess" data-ajax-update="#loginError" defaultbutton="btnLogin" id="frmLogin" method="post">
<p class="fieldset">
<label>E-mail</label>
<input id="emailId" name="emailId" placeholder="E-mail" type="text" value="" />
</p>
<p class="fieldset">
<label>Password</label>
<input id="password" name="password" placeholder="Password" type="password" />
</p>
<p id="loginError" class="field-validation-error"></p>
<p class="fieldset">
<input class="full-width" type="submit" value="Login" id="btnLogin" name="btnLogin" onclick="return validateLoginForm();"/>
</p>
我们通过弹出窗口(其代码如上所示)发出Ajax请求,以验证登录凭据,然后为用户设置cookie。虽然相同的代码在Firefox和Chrome中有效,但在Edge浏览器中却没有(通过fiddler快照可以看到)。