Internet explorer Windows Phone 8.1上的Internet Explorer丢失会话和永久cookie
我们有一个SaaS应用程序,其中浏览器使用名为Internet explorer Windows Phone 8.1上的Internet Explorer丢失会话和永久cookie,internet-explorer,cookies,windows-phone-8,setcookie,Internet Explorer,Cookies,Windows Phone 8,Setcookie,我们有一个SaaS应用程序,其中浏览器使用名为会话id的cookie连接到服务器端会话。此cookie的值是第一次看到任何给定浏览器时创建的UUID v4标识符。我们将把饼干作为电子邮件发送 Set-Cookie: session-id=ebbaf531-8763-4a59-b086-d946124f8d64; Path=/; HttpOnly; Secure; 除了运行在WindowsPhone8.1上的InternetExplorer出现了cookie突然丢失的问题外,其他一切似乎都很好
会话id
的cookie连接到服务器端会话。此cookie的值是第一次看到任何给定浏览器时创建的UUID v4标识符。我们将把饼干作为电子邮件发送
Set-Cookie: session-id=ebbaf531-8763-4a59-b086-d946124f8d64; Path=/; HttpOnly; Secure;
除了运行在WindowsPhone8.1上的InternetExplorer出现了cookie突然丢失的问题外,其他一切似乎都很好
导致cookie丢失的情况:
Set-Cookie:session-id=ebbaf531-8763-4a59-b086-d946124f8d64; Path=/; HttpOnly; Secure; max-age=2419200; Domain=peda.net
同样的行为仍然存在。请注意,此“永久”cookie不会持续浏览器重新启动或手机重新启动
是否有一个已知的解决方法允许不随机丢失cookie?我正在尝试允许用户选择永久会话,并且所有其他浏览器都正常工作。Windows Phone 8.1上的Internet Explorer是剩下的最后一个障碍。我已经尝试添加和删除属性
域
,但没有任何效果。根据我所做的测试,无法对会话cookie执行任何操作。Windows Phone上的Internet Explorer将始终放弃列出的所有案例的所有会话cookie。当Internet Explorer在后台运行时,丢弃cookie的原因是内存不足的情况(1)尤其存在问题
但是,永久性的cookie问题可以解决。事实证明,在Windows Phone 8.1(可能也是所有其他版本)上运行的Internet Explorer只支持非标准的expires
参数,而不支持max age
参数。InternetExplorer6.0-8.0的桌面版本也会发生同样的情况,所以我猜WindowsPhone版本是围绕MSIE8.0开发的,并且包含与cookie大致相同的问题。参数域
不是必需的
因此,正确的Set Cookie
头如下所示:
Set-Cookie: session-id=ebbaf531-8763-4a59-b086-d946124f8d64; Path=/; HttpOnly; Secure; max-age=2419200; expires=Thu, 14 Apr 2016 13:12:28 GMT
注意expires
参数的格式。这种格式最具兼容性。当然,您需要动态计算此属性的正确值,以匹配max age
属性