MS Edge掉落cookie

时间:2018-11-28 23:42:39

标签: cookies session-cookies microsoft-edge

我们在至少16/17版本的MS Edge上遇到了奇怪的行为。在IE 11 / Chrome / Firefox上不会发生相同的问题。

我们的用户通过会话cookie进行身份验证。 Cookie的名称是“ app”。其他cookie涉及使用cookie名称“ prefLang”存储当前的显示语言。 Cookie是HttpOnly,是安全的,并且仅针对正在使用的实际子域设置。

在某些情况下,MS Edge只会删除名为“ app”的会话cookie,而不再是HTTP请求的一部分。提及的“ prefLang” cookie不会被删除,并且在服务器上可见。

掉落发生不容易重现,但在以下情况下有时可见:

  • 用户使用target = _blank从登录的应用程序上下文中打开一个外部链接页面
  • 应用上下文中的两次页面请求之间已经传递了超过12分钟的时间
  • 立即在页面请求后的几秒钟内
  • 用户使用来自同一来源的页面请求打开iframe

请求/响应调试信息服务器端的示例,其中会话cookie app = redactedABC没有传输到服务器

_response

1 个答案:

答案 0 :(得分:2)

我有很多问题和想法,所以评论太久了:

  1. 当您说在其他浏览器中还可以的时候,是基于某些测试案例还是Edge只是通常使用的众多浏览器之一?
  2. 在错误请求之前/之后,您是否设法检查过cookie是否仍在客户端注册?您检查客户端的请求标头了吗?问题在于Edge忘记了cookie本身,Edge忘记了发送cookie,Edge发送了错误的cookie。您是否也尝试过调整Cookie的名称和内容(例如,如果在您的子域上下文中可行,例如remove domain)?
  3. 服务器端呢? Load balancers可能是一个解释。会话存储也可能是一个线索(尽管“未返回的会话cookie”请求是先前未记录的无效cookie触发的结果,但可能性很小)。当然,服务器端的调查对于其他浏览器是否能够大量正常运行毫无意义。

  4. 您如何运行客户端应用程序并执行请求? Ajax或提取请求以及完整的文档加载(您的URI看起来很像APIsh)?您是否注意到请求模式和问题之间的联系? 应用程序客户端部分中cookie数据的不可用也可以作为一个准则(例如,service worker that can't access cookies在很少满足条件时唤醒请求)。 Edge can also be faulty with cookie sent back with Ajax在本地文件中(一种糟糕的应用方式,但我见过很多奇怪的东西)。

根据您提供的信息,这些点很少能产生如此不一致的行为,除非混入一些对边缘敏感的血腥药水中。无论如何,答案可能有助于集中讨论问题并定义更可复制的环境。

除此之外,我发现2-years old thread在谈论一个非常非常非常相似的问题,仍然很活跃,并且看起来还没有解决,对于IE11(对不起)。它与从不同浏览器的进程(例如标签或iframe)访问时的会话Cookie丢弃有关。我没有找到有关Edge的任何问题,并且我相信大多数引擎都已被重写,但是也许您设法找到了困扰的部分(尽管您说的是IE11一切都很好)?

如果您同意,则最好编辑您自己的相关问题相关的问题,以便我删除不是真正答案的答案。