Django CSRF_TRUSTED_ORIGINS 和 http/2

问题描述 投票:0回答:1

我怀疑使用http/2协议的网站没有在请求中发送

Host
标头,例如转到
/admin/

enter image description here

这会导致 Django 抱怨

Origin checking failed - does not match any trusted origins)
,即使发布到完全相同的域。

在 Django 4.2 上使用 http/1 协议的网站不会出现此错误

除了将实际域名添加到

CSRF_TRUSTED_ORIGINS
之外,我还能做些什么吗?

django
1个回答
0
投票

您必须将 SECURE_PROXY_SSL_HEADER 添加到您的 Django 设置中:

CSRF_COOKIE_SECURE = True
CSRF_COOKIE_HTTPONLY = True
CSRF_TRUSTED_ORIGINS=['https://example.com']
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
USE_X_FORWARDED_HOST = True

此外,在 Nginx 服务器配置中设置代理标头:

proxy_set_header X-Forwarded-Proto $scheme;
© www.soinside.com 2019 - 2024. All rights reserved.