4

我有一个在 HTTP 和 HTTPS 后面运行的博客,并且遇到了 csrf 令牌验证问题。

CSRF 令牌应以每种形式提供,但是当我在网站的 HTTP 版本上并尝试提交评论时,我收到以下错误。

禁止 (403) CSRF 验证失败。请求中止。

推荐人检查失败 - http://mysite.com/blog/1/与https://mysite.com/不匹配。

通过 HTTPS 查看博客时它工作正常。

任何人都知道如何获得验证以匹配两者?

4

2 回答 2

1

您可能需要检查您的设置,看看您是否将 CSRF_COOKIE_SECURE 参数设置为 True

这会将 cookie 标记为安全并防止浏览器通过非安全连接(即 HTTP)接受它。

要检查这是否是问题的根源,您可以使用任何有效的视图并放入断言 False 以获取调试屏幕并查看是否发送了 Csrf cookie 或 nit。

于 2011-08-06T06:48:50.010 回答
1

我想到了。这是我的 fastcgi 参数的问题

fastcgi_param HTTPS 开启;

设置需要开启 HTTPS 的环境变量。当这个变量打开时,Django 对 csrf 标记做了一些额外的强制。

于 2011-08-08T17:32:35.697 回答