未设置Django、nginx和gunicorn csrf cookie
我已经安装了nginx、gunicorn和Django,运行在docker容器上。Nginx用作反向代理。 一切正常,但对于POST方法,我得到的错误是未设置Django、nginx和gunicorn csrf cookie,django,docker,nginx,gunicorn,Django,Docker,Nginx,Gunicorn,我已经安装了nginx、gunicorn和Django,运行在docker容器上。Nginx用作反向代理。 一切正常,但对于POST方法,我得到的错误是禁止(未设置CSRF cookie)。。同样的配置在本地运行良好,但在生产环境(aws上的ec2)中,这不起作用 以下是nginx配置: upstream web { ip_hash; server web:8000; } server { location / { alias /src/frontend/dist/;
禁止(未设置CSRF cookie)。
。同样的配置在本地运行良好,但在生产环境(aws上的ec2)中,这不起作用
以下是nginx配置:
upstream web {
ip_hash;
server web:8000;
}
server {
location / {
alias /src/frontend/dist/;
try_files $uri $uri/ /index.html;
}
location /static {
alias /src/static/;
try_files $uri =404;
}
# works locally, but doesn't work in prodcution on ec2
location /api/ {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass http://web; # pass to gunicorn
# what to serve if upstream is not available or crashes
# error_page 500 502 503 504 405 /error.html;
}
location @rewrites {
rewrite ^(.+)$ /index.html last;
}
listen 80;
server_name www.example.com;
}
我已经检查了请求头,但是没有设置cookie。
我已经按照SO的建议尝试了一切。我在Django设置的中间件中设置了CsrfViewMiddleware
CSRF\u COOKIE\u SECURE
和SESSION\u COOKIE\u SECURE
设置为False。我已经没有想法和东西可以尝试了。请给我一个解决办法的建议
谢谢
版本:
Django==1.9.5
gunicorn==19.6.0
MySQL-python==1.2.5
nltk==3.3
pandas==0.23.3
django-pandas==0.5.1
NGINX=1.15.1
这是auth的一个问题。要设置CSRF cookie,您需要使用有效用户验证的会话。我在Django(用于管理站点)中创建了一个超级用户,现在它支持cookies,我们可以发布
这在本地开发环境中从未被发现的原因是它使用了以前的cookie集。清除所有Cookie后,我也可以在本地重新创建此问题。作为提示:为了检查nginx是否删除或修改任何内容,我通常在服务器上执行“curl-I”操作,将响应头与来自外部的请求进行比较。