2011-08-05 4 views
3

나는 HTTP와 HTTPS 모두에서 실행되는 블로그를 가지고 있으며 csrf 토큰 확인과 관련된 문제를 실행 중입니다.Django CSRF (HTTP 및 HTTPS 모두)

CSRF 토큰은 각 양식에서 사용할 수 있지만, HTTP 버전의 사이트에서 주석을 작성하려고 할 때 다음 오류가 발생합니다.

금지됨 (403) CSRF 확인에 실패했습니다. 요청이 중단되었습니다.

리퍼러 검사 실패 - http://mysite.com/blog/1/https://mysite.com/과 일치하지 않습니다.

HTTPS를 통해 블로그를 볼 때 잘 동작합니다.

누구나 확인할 수있는 방법을 알고 있습니까? 당신은 진정한

이 안전한 쿠키를 표시하고 비 보안 연결을 통해 그것을 받아들이에서 브라우저를 방지에 CSRF_COOKIE_SECURE 매개 변수를 설정 있는지 확인하기 위해 설정을 확인 할 수 있습니다

답변

1

나는 그것을 알아 냈다. 내 fastcgi 매개 변수와 관련된 문제입니다.

fastcgi_param HTTPS;

HTTPS가 필요한 환경 변수를 설정합니다. Django는이 변수가 켜져있을 때 csrf 토큰에 대해 약간의 시행을합니다.

+0

웹 서버에서 귀하가 사이트를 실행하고 있습니까? Lighttpd에서 실행되는 동일한 문제가 있으며 현재 해결할 수 없습니다. –

+0

어떻게 수정 했습니까? fastcgi_param을 제거 했습니까? request.is_secure()가 제대로 작동하지 않습니다 ... – Soid

1

, 즉 HTTP이다.

이렇게 문제의 출처인지 확인하려면 작동하는 모든보기를 사용하고 디버그 화면을 가져오고 Csrf 쿠키가 보내지는지 False인지 어설 션하십시오.

+0

도움을 주셔서 감사합니다! 필자는 분명히 그럴 것이라고 생각 했었지만 실제로는 위에 게시 한 것처럼 fastcgi 매개 변수로 설정 한 환경 변수와 관련이 있습니다. – Dave