2011-09-06 4 views
1

다른보기에서 함수를 호출하기 위해 Ajax 요청을 사용하려고하는데 403 오류가 발생합니다. 내 템플릿에서403 도메인을 소유하고있는 ajax 요청에

발췌 : 내보기에서

FB.ui({ method: 'apprequests', title: 'Invite your friends to answer questions!', message:'Invite your friends!'}, 
    function(response) { 
     jQuery.ajax({ 
      url: "/canvas/request/", 
      type: "post", 
      data: {qid: {{ qid }} , request_ids: response.request_ids} 
     }) 
    }); 

발췌 : 내 URL의

def save_request(request): 
    print("in save request") 
    for id in request.request_ids: 
     share = ShareRequest 
     share.question = request.qid 
     share.share_id = id 
     share.save() 

발췌 :

urlpatterns = patterns(... 
    (r'^request/', save_request), 

반환 [06/9월/2011 13시 35분 : 56] "POST/canvas/request/HTTP/1.1"403 2332

나는 정말로 혼란 스럽다.

답변

6

아마도 CSRF 토큰을 요청에 추가해야합니까? 일부 세부 사항은 https://docs.djangoproject.com/en/dev/ref/contrib/csrf/입니다.

+0

나는 그것을 생각했지만 사이트 간 요청이 아닙니다. 어쨌든 시도해 보겠습니다. – Colleen

+1

@Colleen CSRF 보호가 무엇인지 완전히 이해하고있는 것처럼 보입니다. 딜런의 링크를 읽어주세요. –

+1

나는 오해했다 ... 설명서에 "jQuery를 통해 만들어진 AJAX POST 요청이 CSRF 보호에 의해 포착되지 않도록 웹 사이트에 포함 된 javascript 파일에 추가하면 js 코드가 포함되어있다. "하지만 내 페이지가로드되지 않았습니다 ... – Colleen

4

스텔스 모드가 아닌 자신을 유지하기위한 BAD하지만 빠른 해결책 : 귀하의 의견에

from django.views.decorators.csrf import csrf_exempt 

사용이 @csrf_exempt 장식을 CSRF 문제를 무시.

하지만 이것은 나쁜 습관입니다. 그래서 귀하의 사이트가 csrf을 보호하는지 확인하십시오. 그리고 django 문서를 따른다.

+0

고마워, 나는 이것을 지금했다. 왜 장고의 js 코드가 내 페이지를 깰 수 있는지 조사해야합니다 ... – Colleen

관련 문제