2011-10-18 4 views
3

Windows 7에서 mod_wsgi로 Apache2를 통해 Pyjamas와 Django를 실행했습니다. 이러한 설정의 문제로 인해 문제가 발생한다고 생각하지 않습니다. 작동하지 않는 것은 잠옷으로 만든 양식에서 정보를 POST하는 것입니다. 내 응용 프로그램에서 파자마 생성 양식을 사용하려고하면 403s가 생성됩니다 ("CSRF 확인 실패"오류 페이지).파자마 + Django => CSRF 혼동, 403 오류

나는 CSRF와 Pajamas와 관련하여 여기에서 찾을 수있는 모든 답변을 읽고 CSRF와 Django, Django 및 Ajax 등에 관한 많은 외부 연구를 수행했습니다.이 질문이 isn 인 경우 이 상황에서해야할 일을 알고있는 사람에게 다가 가면 나는 질문의 본질을 깎아 냈다.

{% csrf_token %}을 어떻게 파자마에서 생성 된 양식으로 만들 수 있습니까? CSRF 토큰이 Pajamas에서 생성 된 페이지가 ... 지속되는 Pajamas 페이지 인 Pajamas .py 파일에서 생성되어 하드 코딩 된 항목으로 가득 찬 결과로 인해 지속 불가능하지 않기 때문에 불가능할 수도 있습니다. . 현재 CSRF 토큰을 이미 코딩 된 양식에 통합하는 방법은 무엇입니까?

자세한 내용을 요청하는 데 주저하지 마십시오.이 문제는 탐색하기가 매우 어려웠습니다. Pyjamas & Django를 통합하는 방법에 대한 정보는 없습니다. 장고에서 CSRF를 인식하는 유일한 솔루션은 CSRF 보호를 비활성화해야한다고 말합니다. ( 일 수 있습니다. 그러나 어떤 보호를 대신 할 수 있습니까? 내 자신의 쿠키 시스템입니까? 어떤 경우에도 CSRF 보호를 비활성화하는 끔찍한 생각?).

감사합니다.

답변

3

HTTP 요청의 일부인 쿠키에서 CSRF 토큰을 얻으려면 JavaScript를 작성한 다음 제출시 폼에 추가해야합니다. 시작 지점이 답변에서

봐 : Django CSRF check failing with an Ajax POST request

여기에서의 키 양식이 제출 될 때까지 그들이 토큰을 처리 연기 때문에 자바 스크립트, 잠옷 - 생성 된 파일로 지속 할 수 있다는 것입니다.

+0

좋아요, 컴파일하기 전에 관련 자바 스크립트를 .py 파자마 파일에 추가하는 것으로 알고 있습니다. 그러나 당신이 제공 한 링크는 jQuery에만 국한된 것으로 보이며, JavaScript (그리고 jQuery의 확장으로)를 거의 이해하지 못하는 사람으로서 jQuery에 독립적 이도록 어떻게 적응 시킬지 확신하지 못합니다. 딱 맞는 솔루션과 같지만 jQuery에 의존하는 코드가 그 대답의 코드인지 어떻게 알 수 있습니까? – hangtwenty

+1

나 자신이 자바 스크립트 마스터가 아니기 때문에 jQuery를 페이지에 삽입하거나 적어도 비 압축 버전을 다운로드하고 'trim'함수를 추출하는 것이 더 쉬울 것이다. 그것은 문자열의 시작과 끝에서 공백을 제거하는 것과 같이 사소한 일일 것입니다. 응답에서 원하는 부분은'function getCookie (name)'입니다. 그런 다음'getCookie ('csrftoken')'을 사용하여 쿠키 데이터를 가져 와서 폼에 숨겨진 필드로 추가 할 수 있습니다 (이 템플릿은 모두 '{% csrf_token %}'템플릿입니다). –

+0

좋아요, 그건 티켓처럼 보였고 장고를 합당한 방법으로 관련 Pajamas 페이지를 제공 할 수 있으면 될 것이라고 확신합니다.하지만 장고의 URL 인터페이스를 해킹하여 Pajamas를 얻는 것에 질려합니다. 제대로 보여주기 위해서 ... 너무 많은 좌절감과이 파자마 물건으로 계속 가기에 충분한 문서가 아닙니다. Django와 통합하지 않을 때 멋지다고 생각되지만 통합에 대한 문서는 거의 부족합니다. 전 jQuery로 완전히 전환 할 것입니다. 그래도 고마워! – hangtwenty