gpt4 book ai didi

python - django nginx 在生产中通过 http 获取 csrf 验证错误

转载 作者:行者123 更新时间:2023-12-04 14:01:06 26 4
gpt4 key购买 nike

我刚刚使用 nginx 在 AWS 上部署了我的 django 项目。一切正常,除了当我尝试发出任何 POST 请求(仅通过 http)时,出现错误:

"Forbidden (403) CSRF verification failed. Request aborted."



如果我直接使用 Django 运行我的服务器,CSRF 验证会起作用,这让我认为我没有设置我的 nginx.conf正确。
有人可以就如何配置 nginx 以使用 csrf 提供一些指导吗?
这是我当前的配置:
#nginx.conf
upstream django {
# connect to this socket
server unix:///tmp/uwsgi.sock; # for a file socket
#server 127.0.0.1:8001; # for a web port socket
}
server {
# the port your site will be served on
listen 80;

root /opt/apps/site-env/site;

# the domain name it will serve for
server_name mysite.org

charset utf-8;

#Max upload size
client_max_body_size 75M; # adjust to taste

location /media {
alias /opt/apps/site-env/site/media;
}

location /static {
alias /opt/apps/site-env/site/static;
}

location / {
uwsgi_pass django;

include /etc/nginx/uwsgi_params;

proxy_pass_header X-CSRFToken;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto http;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header HOST $http_host;
proxy_set_header X-NginX-Proxy true;


}

}

我也关闭了 SESSION_COOKIE_SECURECSRF_COOKIE_SECURE在我的 Django 设置中。

谢谢

最佳答案

当您从 javascript 发布帖子时,请确保 settings.CSRF_COOKIE_HTTPONLY设置为 False
[1] 中的片段:“是否在 CSRF cookie 上使用 HttpOnly 标志。如果设置为 True,
客户端 JavaScript 将无法访问 CSRF cookie。”

[1] https://docs.djangoproject.com/en/2.0/ref/settings/#csrf-cookie-httponly

关于python - django nginx 在生产中通过 http 获取 csrf 验证错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44034879/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com