当使用单独的Dyno作为React前端和Django后端时的Cookie

时间:2019-05-12 16:25:16

标签: django heroku cookies cross-domain session-cookies

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

因此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中设置了此值后,我在碰到AuthStateMissing端点时得到了/oauth/complete/linkedin-oauth2/

在Google中搜索AuthStateMissing SESSION_COOKIE_DOMAIN会得出一个单独的结果,这表明该问题已报告为Django社交身份验证中的错误,此后已关闭,无需进一步评论。

任何人都可以抛出的光将不胜感激。

1 个答案:

答案 0 :(得分:3)

使用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://stackoverflow.com/a/54513216/1501643