2010-06-24 5 views
0

YUI 업 로더를 사용하여 장고보기에 파일을 업로드하려고합니다.YUI 업 로더로 Django CSRF 쿠키 보내기

그러나 CsrfViewMiddleware에서 403 오류가 발생합니다. 문제는 플래시 업 로더 (YUI 업 로더가 사용하는)가 파일 업로드 요청에 CSRF 쿠키를 보내지 않아서 발생한 것입니다.

YUI 업 로더의 uploadAll() 기능을 사용하면 오브젝트 형식으로 업로드 요청과 함께 추가 데이터를 보낼 수 있습니다. CSRF 쿠키가 쉽게 검색 될 수 있기 때문에 uploadAll() 함수를 통해 요청에 쿠키를 추가하려고 시도하지만 CsrfViewMiddleware가 쿠키를 예상 한 위치에서 찾을 수 있도록 어떤 형식으로 보내야하는지 완전히 확신하지 못합니다. . 이 작동하지 않습니다 var cookie = YAHOO.util.Cookie.get('csrftoken'); uploader.uploadAll(url, 'POST', { csrfmiddlewaretoken: cookie });

이 어떤 통찰력이 크게

을 주시면 감사하겠습니다!

답변

0

유감스럽게도 Flash Player 제한으로 인해 YUI Uploader는 요청의 헤더에 쿠키를 삽입 할 수 없습니다. 요청의 헤더는 백엔드가 예상하는 곳입니다. 당신이 할 수있는 유일한 일은 요청에 POST 변수를 추가하는 것입니다. 그러나 이는 POST 변수로 추출하기 위해 추가 서버 로직이 필요하다는 것을 의미하며 쿠키 변수를 쿠키 레코드와 비교합니다. 기본적으로 작동하지 않습니다. 서버 측 코드를 수정할 수없는 경우

것은, 당신은 업 로더 :(에서 보낸 요청을 인증 할 수 없습니다. 당신은 좋아. 내가 결국 계층을 도입하여 고정하고

+0

미들웨어는 CSRF 미들웨어에 도착하기 전에 요청 객체를 적절한 쿠키로 수동 업데이트한다. – Derek