2016-01-07 21 views
5

Django'yu 1.8'den 1.9'a yükselttim. Daha sonra, bu hatayı, Django yönetici girişinden sonra localhost'umda görüyorum:CSRF doğrulaması Başarısız - Sunucu güvenli iken başvuru sahibi güvensiz

Referer checking failed - Referer is insecure while host is secure.

Her şey üretimde iyi çalışır. Eğer alana bağlı bir SSL sertifikası kullanıyorsanız çünkü settings.py dosyasında

SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https') 
SESSION_COOKIE_SECURE = True 
CSRF_COOKIE_SECURE = True 
+0

Sanırım geliştirme için http kullanıyorsunuz. böylece uygulama 'local.py' (veya benzeri)' '' kullanmak için yapılandırılmalıdır. – sobolevn

cevap

2

olanlar hatları üretimi gayet: Aşağıda benim settings.py dosyasının snippet'idir. Ancak, yerelde muhtemelen http://localhost:8000 veya benzeri bir şey kullanıyorsunuz. https://localhost:{{YOUR_PORT_NUMBER}} aracılığıyla bağlanmaya çalışırsanız büyük olasılıkla ERR_SSL_PROTOCOL_ERROR gibi bir hata alırsınız.

Sorun, django/django/middleware/csrf.py'un 167-168 satırlarında. https ürününü kullanırken, request.is_secure(), True ... döndürüyor ... bu da HTTP_REFERER öğesinin doğru olmasını gerektirir veya başvurulan hatayı alırsınız.

Tek çözüm adjust your settings.py file depending on whether you're in your local or production environment olacaktır. Bu şekilde, bu üç satırı, hem localhost hem de üretim sunucunuzda ortak olan diğer ayarları içe aktaran settings_production.py dosyasına ekleyebilirsiniz. Localhost'unuz, bu satırları içermeyen farklı bir ayarlar kümesi kullanır.

+0

Evet. Anladım. Benim sorumda belirttiğim satırlardan önce, '' ÇEVRE == 'localhost' 'ise bu koşul var. Soruda belirttiğim satırların anlamı sadece üretimde yürütülür. Peki bu hatayı önlemek için ayarlarıma ne eklemek zorundayım? – Farcorn

+0

Sadece kontrol etmek için, bu üç satırı tamamen silerseniz, site 'localhost' üzerinde çalışır mı? O zaman ne oluyor? Sorun, 'HTTP_REFERER' meta etiketinizin' localhost'da 'https' kullanılmamasıdır. ['django/django/middleware/csrf.py'] 'nin 167-168 numaralı satırlarına bakın (https://github.com/django/django/blob/master/django/middleware/csrf.py) – YPCrumble

+0

Hala alıyorum Bu üç çizgiyi anlattığımda aynı hata. – Farcorn

İlgili konular