2012-07-23 3 views
1

Django 기반 앱의 Chrome 확장 프로그램 (링크 제출 기능 포함)을 개발하기 전에 Chrome 확장 프로그램을 개발해 본적이 없습니다. 나는 다음과 같은 오류 얻을 확장하여 링크를 제출하려고 할 때 :POST 403 백엔드에서 Django와 Chrome 확장을 금지했습니다.

'POST http://127.0.0.1:8000/add_link_from_extension 403 (FORBIDDEN)' 

이이 POSTDATA JSON에 csrfmiddlewaretoken 전달하여 해결 될 수 있지만, 분명히 나는 ​​할 수 없어

<script>var csrfmiddlewaretoken = "{{ csrf_token }}"</script> 

Chrome 확장 프로그램의 html 파일에 있습니다. Csrf_token을 장고에서 Chrome 확장 프로그램의 자바 스크립트로 전달하는 방법은 무엇입니까? 또는이 문제와 관련하여 다른 방법이 있습니까? 여기에 크롬 확장 프로그램에서 JS 코드의 관련 부분입니다 : 당신은 CSRF 토큰과 쿠키를 설정하려고 할 수

postdata = { 
     "url":url.value 
     //"csrfmiddlewaretoken": csrfmiddlewaretoken 
    }; 
$.post('http://' + "127.0.0.1:8000" + '/add_link_from_extension', postdata, success); 

답변

4

가 (참조 : https://docs.djangoproject.com/en/dev/ref/contrib/csrf/#ajax을). 또는 간단히보기를 csrf_exempt으로 꾸미십시오.

개인적으로, 나는 두 가지 방법 모두 차선책이라고 생각합니다. 정말로 브라우저 확장과 같은 것을 통해 사이트에 대한 외부 액세스를 허용하려는 경우 API를 설정하고 사용해야하며, 특히 어떤 유형의 쓰기 액세스도 허용하려면, 다음을 추가해야합니다. OAuth와 같은 것을 가진 인증 레이어. django-tastypie은 좋은 드롭 인 API 솔루션으로 시도해 볼 수 있으며 OAuth를 즉시 사용할 수 있습니다.

+0

감사합니다. 시도한 csrf_exempt, 여전히 같은 오류가 발생합니다. django-tastypie에 대해 내 이빨을 시험해 보겠습니다. – Arman

+0

CSRF 토큰으로 쿠키를 설정하는 방법에 대한 구체적인 예는 무엇입니까? django 문서 및 http://stackoverflow.com/questions/7474988/authentication-using-chrome-extension-and-django는 명확하지 않습니다. – Arman