Internet explorer Windows Phone 8.1上的Internet Explorer丢失会话和永久cookie

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突然丢失的问题外,其他一切似乎都很好

我们有一个SaaS应用程序,其中浏览器使用名为
会话id
的cookie连接到服务器端会话。此cookie的值是第一次看到任何给定浏览器时创建的UUID v4标识符。我们将把饼干作为电子邮件发送

Set-Cookie: session-id=ebbaf531-8763-4a59-b086-d946124f8d64; Path=/; HttpOnly; Secure;
除了运行在WindowsPhone8.1上的InternetExplorer出现了cookie突然丢失的问题外,其他一切似乎都很好

导致cookie丢失的情况:

  • 在手机上切换或启动任何其他需要大量RAM的应用程序
  • 关闭浏览器(按住按钮2秒钟,在浏览器屏幕截图上单击(X))
  • 重新启动电话
  • 案例1尤其有问题,因为它看起来像是用户的随机故障。在这种情况下,Internet Explorer将重新加载页面,并且重新加载页面的GET请求缺少cookie。鉴于我使用了上面的会话cookie,我理解案例2和案例3是预期的行为

    我还尝试使用

    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
    属性