cookies - 无法在 Safari 13 中跨 .test 子域共享 cookie

标签 cookies safari cross-domain

我有 https://example.test 的 apache 自我证书& https://m.example.test

浏览时https://m.example.test使用 php 'session.cookie_domain' 将 cookie 设置为基本域 '.example.test'。这在 Chrome、Firefox 或 Safari 最高版本 12 中有效。
但是,它不再适用于 Safari 13(iOS 13 或 Catalina)。

更奇怪的是,在我的生产机器上,cookie 仍然设置为 Safari 13 上的基域 https://example.COM & https://m.example.COM

我对 COM 和 TEST 服务器都有相同的 apache 服务器配置。在将我的 iOS 设备更新到 iOS 13 或在 Catalina 之后的 MacOS 中之后,它只是停止在我的开发“.test”服务器上工作。 Chrome、Firefox 仍然可以使用。即使是连接到我的开发机器(通过代理)的旧 iOS 设备仍将 cookie 存储到基本域“.example.test”。所以看起来它是 Safari 13 特有的,并且只在“.test”域中。

我使用 Apple 的最新建议(最多 825 天等)为我的 .TEST 服务器创建了新证书,但没有任何区别。看起来自签名证书可能发生了一些变化。或者“.test”(非公共(public))域可能存在新规则?它是 Safari 特有的,“.test”非公共(public)域或证书。或者我什至没有想到的其他事情。

知道如何配置 Apache/Macosx/certificates 以便我仍然可以在开发 .test 域中使用 Safari 13 跨子域共享 cookie 吗?谢谢。

最佳答案

这不是证书的问题,但 Safari 解析 .test 的方式似乎有所不同。顶级域名。
我们通过为我们需要的每个子域显式设置 cookie 来解决这个问题。在我们的 Rails 应用程序中,在开发环境中,我们像这样设置 session 存储:

config.session_store(
  :active_record_store,
  key: 'our_app_session',
  domain: ['ourapp.test', 'api.ourapp.test', 'help.ourapp.test']
)
如果你能找到在你的后端做同样事情的方法,你应该能够为不同的 .test 使用相同的 cookie。子域。

关于cookies - 无法在 Safari 13 中跨 .test 子域共享 cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62023857/

相关文章:

css - 轮播堆叠图像 : Webkit, Chrome,仅限 Safari

javascript - 在 Safari (Windows) 中使用 html5/js 音频时出现问题

asp.net-mvc - Chrome 没有在我的 OpenID Connect 工作流程 (ASP.NET OWIN) 中保存/返回 Nonce cookie

php - setcookie with expire=0 在浏览器关闭后不会过期

go - Cookie 不使用 Golang 设置

Java 1.6 update 11 适用于 safari 5,但不适用于 java 1.6.25,为什么?

javascript - 根据域和名称的范围删除重复的 JavaScript cookie

javascript - 确定框架是否跨域的最佳方法?

jquery - IE跨域jSONP到google apps脚本内容服务

jquery - 是否可以对 application/json 进行跨域 POST ajax 请求?