gpt4 book ai didi

cookies - MS Edge 丢弃 cookie

转载 作者:行者123 更新时间:2023-12-04 15:39:02 26 4
gpt4 key购买 nike

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

我们的用户通过 session cookie 进行身份验证。 cookie 名称是“应用程序”。其他 cookie 涉及使用 cookie 名称“prefLang”存储当前显示语言。 cookie 是 HttpOnly、安全的,并且只为实际使用的子域设置。

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

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

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

  • 请求/响应调试信息服务器端的示例,其中 session cookie app=redactedABC 未传输到服务器
    2018-11-28 09:44:00 UTC POST hasIdentity: 1 UserId: <redacted>  Request: https://app.domain.com/page/action/full/add/0 / Cookie: _gid=redacted; _ga=redacted; app=redacted-ABC; prefLang=de

    2018-11-28 09:44:00 UTC 200 hasIdentity: 0 UserId: 0 Response headers: Array
    (
    [0] => Expires: Thu, 19 Nov 1981 08:52:00 GMT
    [1] => Cache-Control: no-store, no-cache, must-revalidate
    [2] => Pragma: no-cache
    )

    2018-11-28 09:46:21 UTC POST hasIdentity: 0 UserId: 0 Request: https://app.domain.com/page/action/full/add/0 / Cookie: _gid=redacted; _ga=redacted; prefLang=de

    2018-11-28 09:46:21 UTC 302 hasIdentity: 0 UserId: 0 Response headers: Array
    (
    [0] => Expires: Thu, 19 Nov 1981 08:52:00 GMT
    [1] => Cache-Control: no-store, no-cache, must-revalidate
    [2] => Pragma: no-cache
    [3] => Set-Cookie: app=redactedXYZ; path=/; domain=app.domain.com; secure; HttpOnly
    )

    2018-11-28 09:46:21 UTC GET hasIdentity: 0 UserId: 0 Request: https://app.domain.com/account/login / Cookie: _gid=redacted; _ga=redacted; prefLang=de; app=redactedXYZ

    2018-11-28 09:46:21 UTC 200 hasIdentity: 0 UserId: 0 Response headers: Array
    (
    [0] => Expires: Thu, 19 Nov 1981 08:52:00 GMT
    [1] => Cache-Control: no-store, no-cache, must-revalidate
    [2] => Pragma: no-cache
    )

    最佳答案

    我有很多问题和想法,评论太长了:

  • 当您说在其他浏览器中没问题时,是基于某些测试用例还是 Edge 只是通常使用的众多浏览器之一?
  • 您是否设法在错误请求之前/之后检查 cookie 是否仍在客户端注册?您是否检查过请求 header 客户端?问题是关于 Edge 忘记 cookie 本身,Edge 忘记发送 cookie,Edge 发送错误的 cookie。您是否还尝试稍微调整 cookie 名称和内容(例如 remove domain,如果在您的子域上下文中可行)?
  • 服务器端呢? Load balancers可以是一种解释。 session 存储也可能是一个线索(尽管“没有返回的 session cookie”请求是先前未记录的无效 cookie 踢的结果,但可能性很小)。当然,如果其他浏览器在大量运行时完美无缺,那么服务器端调查就毫无意义。
  • 您如何运行客户端应用程序并执行请求? 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)访问时 session cookie 丢失有关。我没有发现 Edge 的这个问题,我相信大部分引擎都被重写了,但也许你设法找到了闹鬼的部分(尽管你说在 IE11 上一切都很好)?

    如果你同意,你最好用相关的相关要点编辑你自己的问题,这样我就可以删除这个不是真正答案的答案。

    关于cookies - MS Edge 丢弃 cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53529777/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com