每當我嘗試登錄到Django的管理員應用程序時,填寫用戶名和密碼並提交表單後,頁面將永久掛起。Django Admin - CSRF驗證失敗。請求中止
當我刷新瀏覽器POST請求,我得到:
CSRF verification failed. Request aborted.
當我再次刷新頁面,一切正常,我看到管理應用程序,我登錄,我可以在我的應用程序和表格上執行CRUD操作。
任何想法爲什麼?
我在使用https握手的Django應用程序前面有Nginx反向代理。所以,當你去(例如):
https://platform.staging.com/admin/
Nginx的反向代理,爲
http://admin1.staging.platform.com/admin/
這是我的nginx的配置:
upstream admin-cluster {
ip_hash;
server admin1.staging.platform.com;
}
# force redirect of http to https
# application will be available only over https
server {
listen 80 default;
server_name platform.staging.com;
rewrite ^https://$server_name$request_uri? permanent;
}
# https server
# traffic is going to local web servers over normal http
# front nginx proxy server will hold ssl session
server {
listen 443 ssl spdy;
server_name platform.staging.com;
keepalive_timeout 70;
ssl on;
ssl_certificate /etc/ssl/platform.staging.com.crt;
ssl_certificate_key /etc/ssl/platform.staging.com.key;
location /admin {
proxy_pass http://admin-cluster;
}
}
編輯:
所以,我找到了解決方法。當我還讓我的Nginx的反向代理服務器80端口重定向,但像這樣所有的HTTP請求到https:
server {
listen 80 default;
server_name platform.staging.com;
rewrite ^https://$server_name$request_uri? permanent;
}
它解決了這一問題。任何想法爲什麼?
有關我現在實施的解決方法,請參閱我的問題末尾的編輯。 –