将单独的 Dyno 用于反应前端和 Django 后端时的 Cookie

Cookies when using separate Dyno for react frontend and Django backend

我正在构建一个简单的 Web 应用程序,使用 React.js 作为前端,使用 Django 作为服务器端。

因此 frontend.herokuapp.combackend.herokuapp.com

当我尝试通过 React 应用程序调用我的 API 时,从 API 收到的 cookie 没有随请求一起发送。

我曾期望我能够支持此配置而无需执行任何特殊操作,因为所有服务器端请求(我认为)都将由 JS 客户端应用程序使用其身份验证 cookie 直接发送到后端进程附上。

为了找到我认为可行的解决方案,我尝试设置

SESSION_COOKIE_DOMAIN = "herokuapp.com"

虽然不太理想(因为 herokuapp.com 是一个广阔的领域)在生产中似乎很安全,因为它们将在 api.myapp.com 和 www.myapp.com 上。

但是,在 settings.py 中设置此值后,我在点击 /oauth/complete/linkedin-oauth2/ 端点时得到 AuthStateMissing

在 google 中搜索 AuthStateMissing SESSION_COOKIE_DOMAIN 得到一个单独的结果,这意味着该问题被报告为 Django 社交身份验证中的一个错误,并且已经关闭,没有进一步的评论。

任何人都可以发出任何光,我们将不胜感激。

我 运行 在使用 herokuapp.com 时遇到了完全相同的问题。 我什至在

上发了一个问题

根据 Heroku 文档:

In other words, in browsers that support the functionality, applications in the herokuapp.com domain are prevented from setting cookies for *.herokuapp.com

Heroku 阻止来自前端的 cookie。herokuapp.com 和后端。herokuapp.com 您需要将自定义域添加到前端。herokuapp.com 和后端。herokuapp.com

完整答案