http - 在多级子域之间共享 cookie
问题描述
我无法理解为什么 cookie 保存在我的应用程序的一个场景中,而不是另一个场景中。
我有多个服务,每个服务都有自己的子域,互相发出 REST 请求。在一种情况下,service.example.com向login.example.com发出 POST 请求。我将 fetch API 与credentials: include
. 我也用 axios 进行了测试,withCredentials: true
结果相同。成功的响应有一个Set-Cookie
带有 JWT 和域的标头,example.com
在这种情况下,浏览器会按预期保存 cookie。
现在,有一个反映生产设置的开发环境设置,只有每个 URL 都在dev.example.com下。所以在开发环境中service.dev.example.com向login.dev.example.com发出相同的 POST 请求。在这种情况下,如果 cookie 域是example.com
,它会继续按预期工作。
但是,如果我将开发环境中的 cookie 域更改为dev.example.com
,则浏览器(在最新的 Chrome 和 Firefox 上测试)将不再保存 cookie,即使涉及的每个 URL 仍然在 cookie 域的子域中。
我已经阅读了RFC6265 上的域匹配部分,我的设置似乎满足了那里列出的每个条件。
有谁知道为什么它在这种情况下不起作用?有什么方法可以让我的测试设置不存储也将用于对 prod 环境的请求的 cookie?
谢谢。
解决方案
推荐阅读
- elasticsearch - Kibana 中的 SQL “Distinct” 等价物是什么?
- git - git merge/rebase/cherrypick 跳过 master 上的提交
- c - coreFlightSystem 的自定义应用程序:“无法加载 cFE 应用程序”
- amazon-web-services - AWS 负载均衡器日志从 s3 到弹性搜索
- ios - 执行任何 gem 命令时出现错误无法加载此类文件 - rubygems/core_ext/kernel_warn (LoadError)
- c++ - 如何修复 C++ 中的“预期”错误
- mysql - 如何导出mysql服务器管理然后导入phpmyadmin?
- android - 覆盖所有用户节点。Firebase 上所有用户的特定节点
- command-line-arguments - 使用 ManyConsole 声明所需的互斥选项
- ios - 我们可以在 iOS 中用 Swift 包管理器替换 Cocoapods 吗?