【发布时间】:2023-01-16 12:08:08
【问题描述】:
我在 Django 中使用了内置的 CSRF 模块,它在本地主机上工作。在 nginx 和 windows 服务器上的女服务员上部署后,它给了我以下错误:
Forbidden (403)
CSRF verification failed. Request aborted.
Help
Reason given for failure:
Origin checking failed - https://95.18.243.298 does not match any trusted origins.
在 settings.py 中尝试过这些设置:
CSRF_TRUSTED_ORIGINS = ['95.18.243.298']
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
USE_X_FORWARDED_HOST = True
USE_X_FORWARDED_PORT = True
CSRF_COOKIE_SECURE = True
SESSION_COOKIE_SECURE = True
认为这可能与实施 HTTPS 有关。 nginx 配置如下所示:
server {
listen 80;
server_name DJANGO-WEB; # substitute your machine's IP address or FQDN
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name DJANGO-WEB;
charset utf-8;
ssl_certificate C:/Users/Administrator/Desktop/certifikat.pem;
ssl_certificate_key C:/Users/Administrator/Desktop/privateKey.key;
# max upload size
client_max_body_size 75M;
location /static {
alias C:/Users/Administrator/itavis-web/static;
}
location / {
proxy_pass http://localhost:8080; # See output from runserver.py
proxy_set_header X-Forwarded-Port $server_port;
proxy_set_header X-Forwarded-Host $host;
}
}
希望有人能帮忙。
【问题讨论】:
标签: python django nginx csrf-token waitress