Django 应用程序在本地运行,但我在 Heroku 上发现 CSRF 验证失败

Lin*_*yen 4 python django heroku csrf python-3.x

我的应用程序运行良好,heroku local但部署到 Heroku 后,每次我尝试以管理员身份登录/注册/登录时,它都会返回如下所示的错误。

我试图提出@csrf_exempt意见profile,但这并没有解决问题。

我能做些什么?

在此输入图像描述

Chr*_*ris 10

该错误消息是相当不言自明的(请原谅拼写错误,因为我无法从图像复制):

\n
Origin checking failed - https://pacific-coast-78888.herokuapp.com does not match any trusted origins\n
Run Code Online (Sandbox Code Playgroud)\n

您使用的域不是 CSRF 的可信来源。

\n

然后有一个文档链接,我怀疑该链接指向Django CSRF 文档,尽管该设置的文档CSRF_TRUSTED_ORIGINS可能更有用:

\n
\n

不安全请求的可信来源列表(例如POST)。

\n

对于包含Origin标头的请求,Django\xe2\x80\x99s CSRF 保护要求标头与标头中存在的来源匹配Host

\n
\n

查找您的settings.pyforCSRF_TRUSTED_ORIGINS并添加https://pacific-coast-78888.herokuapp.com到列表中。如果该设置尚不存在,只需添加它:

\n
CSRF_TRUSTED_ORIGINS = ["https://pacific-coast-78888.herokuapp.com"]\n
Run Code Online (Sandbox Code Playgroud)\n

  • 有一件事让我很恼火 - 列表中的值不能包含尾部斜杠,如果您只是从地址栏中剪切并粘贴网址,则通常会添加尾部斜杠。 (3认同)