将单独的 Dyno 用于反应前端和 Django 后端时的 Cookie
Posted
技术标签:
【中文标题】将单独的 Dyno 用于反应前端和 Django 后端时的 Cookie【英文标题】:Cookies when using separate Dyno for react frontend and Django backend 【发布时间】:2019-09-29 18:07:57 【问题描述】:我正在构建一个简单的 Web 应用程序,前端使用 React.js,服务器端使用 Django。
因此frontend.herokuapp.com
和backend.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 社交身份验证中的一个错误,并且已在没有进一步评论的情况下关闭。
任何人都可以投掷的任何光都将不胜感激。
【问题讨论】:
【参考方案1】:我在使用 herokuapp.com 时遇到了完全相同的问题。 我什至在SO here. 上发布了一个问题
根据 Heroku 文档:
换句话说,在支持该功能的浏览器中,herokuapp.com 域中的应用程序无法为 *.herokuapp.com 设置 cookie
Heroku 阻止来自 frontend.herokuapp.com 和 backend.herokuapp.com 的 cookie 您需要将自定义域添加到 frontend.herokuapp.com 和 backend.herokuapp.com
完整答案https://***.com/a/54513216/1501643
【讨论】:
我很想请你喝一杯,我真的从来没有找到过这个。如果你曾经在百慕大,你应该找我,我们都在电话簿里。 冰岛还有免费啤酒。以上是关于将单独的 Dyno 用于反应前端和 Django 后端时的 Cookie的主要内容,如果未能解决你的问题,请参考以下文章
如何解决错误 405 方法不允许,用于 django graphql 服务器并在前端反应 axios