我正在使用前端的React.js和服务器端的Django构建一个简单的Web应用程序。
因此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中设置了此值后,我在碰到AuthStateMissing
端点时得到了/oauth/complete/linkedin-oauth2/
。
在Google中搜索AuthStateMissing SESSION_COOKIE_DOMAIN
会得出一个单独的结果,这表明该问题已报告为Django社交身份验证中的错误,此后已关闭,无需进一步评论。
任何人都可以抛出的光将不胜感激。
答案 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