Django forbidden 403 Origin checking failed csrf failed

Я запускаю django на машине docker. Все работает отлично, но когда я хочу войти на сайт администратора, я получаю 403 forbidden

Origin checking failed - https://example.com does not match any trusted origins.

Я пытался добавить некоторые другие настройки, такие как:

ALLOWED_HOSTS = [
    "example.com",
    "127.0.0.1",
    "localhost",
]

CSRF_TRUSTED_ORIGIN = ["https://example.com"]

if PRODUCTION:
    CSRF_COOKIE_SECURE = True
    SESSION_COOKIE_SECURE = True

как указано здесь и здесь, но и это не работает.

Вот моя установка nginx:

server {
        server_name example.com;

        location = /favicon.ico {
                access_log off;
                log_not_found off;
        }

        location /static/ {
                alias /home/example/data/static/;
        }

        location /media/ {
                alias /home/example/data/media/;
        }

        location / {
                proxy_pass http://127.0.0.1:8000;
        }

        listen 443 ssl; # managed by Certbot
        ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # managed by Certbot
        ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # managed by Certbot
        include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
        ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

}

как исправить эту ошибку?

Мне удалось исправить эту ошибку, добавив:

SECURE_PROXY_SSL_HEADER = ("HTTP_X_FORWARDED_PROTO", "https")

в настройках django и

include proxy_params;

войти в конфигурацию nginx

Вам стоит попробовать: CSRF_TRUSTED_ORIGINS = ["https://example.com"]

Перед этим введите CSRF_TRUSTED_ORIGIN = ["https://example.com"]

Может быть, это поможет вам.

Вернуться на верх