安装SSL / https密钥后,将删除X-CSRFToken
。我还设置了http2。在Https之前,一切正常,但现在我得到了403,因为缺少CSRF令牌。找不到解决此特定问题的信息。谢谢你的帮助。
support
server {
# Enable HTTP/2
listen 443 ssl http2;
listen [::]:443 ssl http2;
ssl on;
server_name site.io www.site.io;
# Use the Let's Encrypt certificates
ssl_certificate /etc/letsencrypt/live/site.io/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/site.io/privkey.pem;
# Include the SSL configuration from cipherli.st
include /etc/nginx/snippets/ssl-params.conf;
add_header Strict-Transport-Security max-age=500;
access_log /home/nodejs/site.io/resuma_io_access.log;
error_log /home/nodejs/site.io/resuma_io_error.log;
root /home/nodejs/site.io/www/dist/client;
location ~ ^/(api|user|auth|socket.io-client|sitemap.xml) {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_set_header Upgrade $http_upgrade;
proxy_ssl_session_reuse off;
proxy_redirect off;
proxy_set_header Connection 'upgrade';
proxy_cache_bypass $http_upgrade;
proxy_http_version 1.1;
proxy_pass_header X-CSRFToken;
add_header X-Frame-Options SAMEORIGIN;
sendfile off;
proxy_pass http://nodejs_upstream;
}
}
最佳答案
对于在Nginx SSL / https上运行的Django,我也有同样的问题。
如Bryan在Django CSRF check failing with an Ajax POST request上提到的。传递csrftoken的另一种方法是通过参数传递它:
$.ajax({
data: {
somedata: 'somedata',
moredata: 'moredata',
csrfmiddlewaretoken: mytoken
},
其中,csrfmiddlewaretoken代表您的api用于存储csrftoken(django中的csrfmiddlewaretoken)的变量名:
而mytoken是一个初始化的变量
DOM:使用您的api的令牌命名变量。
在Django中,只需在HTML文件中添加{%csrf_token%}。这将提供csrfmiddlewaretoken变量,可在jQuery中访问
mytoken = jQuery("[name=csrfmiddlewaretoken]").val();
COOKIE:通过使用从cookie获取令牌的jQuery函数。
mytoken = getCookie('csrftoken');
django doc中提到了getCookie()函数,以便使用AJAX处理CSRF POST。
当然,这不能解决SSL标头问题,但允许POST,PUT和DELETE请求。它还需要通过每个$ .ajax调用来添加
csrfmiddlewaretoken
变量关于node.js - SSL/https从 header 中删除X-CSRFToken,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42536254/