【问题标题】:Why is a SameSite=Strict cookie for http://127.0.0.1:12345/ not being sent in Android browsers?为什么在 Android 浏览器中不发送 http://127.0.0.1:12345/ 的 SameSite=Strict cookie?
【发布时间】:2023-02-03 14:14:51
【问题描述】:

我们有一个跨平台应用程序,它在 127.0.0.1 上的随机端口上运行 Web 服务器。服务器代码在每个平台上都是相同的。

示例网址:http://127.0.0.1:12345/

为了对请求进行身份验证,在初始响应中设置了一个会话 cookie。该 cookie 设置了 HttpOnlySameSite=Strict 以提高安全性。

就在本周,我们发现在大多数 Android 浏览器的当前版本(Chrome 109.0.5414.85、Chrome Beta 110.0.5481.40、Firefox 109.1.1、Edge 109.0.1518.53)中,身份验证失败。使用 Chrome 开发工具,我可以看到 cookie 没有在请求中发送,尽管它在 cookie 存储中。如果我使用开发工具手动将 SameSite=Strict 更改为 SameSite=Lax(不受欢迎),则会发送 cookie,一切都会开始正常工作。

Opera (73.1.3844.69816) 不受影响,在测试平板电脑上升级之前的 Chrome 也不受影响(可能是 100 之前的版本)。我无法在 Chrome 中找到任何相关的最新更改。

令人费解的是,这个问题在 Windows 或 iOS 上都不存在(Mac 尚未测试);在 Chrome、Firefox 和 Edge 的 109.x 版本下,在 Windows 上使用该应用程序没有问题。

如果这是一个浏览器策略问题(尽管这是一个同源请求),我希望它能跨平台运行。如果这是浏览器错误,我不认为 Chrome 和 Firefox 都会受到影响。

我错过了什么?

【问题讨论】:

    标签: android http cookies samesite


    【解决方案1】:

    我们仍然不知道问题的原因,但解决方法是将初始响应(设置会话 cookie 的响应)从 302 重定向更改为带有 <meta http-equiv="refresh"> 标记的 200 响应(如this answer)。

    我们尝试过但没有成功的其他事情:

    1. 使用 http://localhost 或 http://localhost.localdomain 而不是 http://127.0.0.1
    2. 在 cookie 上设置 Secure 属性
    3. 在 302 响应中将 Location 设置为绝对 URL (http://127.0.0.1:12345/) 而不仅仅是路径
    4. 清除浏览器缓存和 cookie
    5. 在 302 响应上设置 Cache-Control: private, no-store, must-revalidate

      通过重定向,Chrome 开发工具显示有关会话 cookie 的消息:

      此 cookie 已被阻止,因为它具有“SameSite=Strict”属性并且请求是从不同的站点发出的。这包括由其他站点发起的顶级导航请求。

      一些可能相关的错误和提交:

      1. 1221316 - SameSite context type should consider redirect chain - chromium
      2. 150066 - Set-cookie ignored for HTTP response with status 302 - chromium(关闭 wontfix)
      3. 696204 - Cookies are ignored on 302 redirects - chromium(关闭 wontfix)
        • This comment 谈论在重定向上设置 Cache-Control 标头以防止浏览器缓存响应。其余的讨论似乎是关于一个不可靠的可重现问题。
      4. Change cookie domain handling for IP address host

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-07
      • 2019-03-28
      • 2020-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-07
      相关资源
      最近更新 更多