会话Cookie在IE11中有错误的行为?

时间:2018-07-26 11:31:49

标签: javascript session cookies

请检查以下两个图像:

Cookies in IE11

Cookies in chrome

我要实现的逻辑如下: 我们有一个门户网站,用户可以在其中模拟另一个用户。现在,当用户结束会话并再次启动浏览器时,应该停止模拟并注销用户。

要实现这一点,我在登录时设置了两个cookie,一个cookie的过期日期为+99天,另一个cookie没有expires属性。

在IE11中,expires列完全为空,我不知道为什么。但是当我关闭窗口并结束会话时,cookie仍然存在并且我的逻辑不起作用。

checkSimulationCookieAndLogOut() {
    // Checks for cookie if a user is simulated and logs out
    let self = this;
    let sessionCookie = self.globalFunctions.getCookie('user-is-simulated-session-cookie');
    let userSimulationCookie = self.globalFunctions.getCookie('user-is-simulated');
    if(!sessionCookie && userSimulationCookie) {
        //self.globalFunctions.automaticLogoutAndRedirect();
        self.globalFunctions.deleteCookie('user-is-simulated');
        console.log('test');
    }
}

cookie的设置如下:

setCookie(name,value,days) {
    var expires = "";
    if (days) {
        var date = new Date();
        date.setTime(date.getTime() + (days*24*60*60*1000));
        expires = "; expires=" + date.toUTCString();
    }
    document.cookie = name + "=" + (value || "")  + expires + "; path=/";
}

self.globalFunctions.setCookie('user-is-simulated-session-cookie', 'true');
self.globalFunctions.setCookie('user-is-simulated', 'true', 99);

self.globalfunctions只是一个类,其中包含一些在整个应用程序中共享的功能。

有人知道我可以做些什么或我在哪里做错了吗?

1 个答案:

答案 0 :(得分:0)

好的,我发现它可以在IE11的Windows机器上工作。因此,也许它与virtualbox有关。

但是总的来说是可行的。