2013-07-06 3 views
0

장고 기반의 간단한 ajax 기반 웹 응용 프로그램을 시작합니다.POST를 보내는 동안 403 오류 발생

나는 hompage를 시작할 수 있습니다. 홈페이지에서 내가 403 오류를

내 인덱스 페이지를 얻고 다른 URL을 공격 할 때하는 것은 http://mydomain.com/SampleApp입니다 -이 잘

내 아약스 URL이 http://mydomain.com/SampleApp/ajax입니다 작동 -이

'사용자 도메인을 교체하십시오 (403) 오류가 있습니다. com '을 위의 URL에서 적절한 localhost : 8000으로 제한합니다.

표시되는 오류가

CSRF 검증에 실패했습니다. 요청이 중단되었습니다. 실패 이유 : CSRF 쿠키가 설정되지 않았습니다.

이 나는 ​​소스 코드

URL의 컨퍼런스

url(r'^SampleApp/', include('views.urls')) 

views.url.py

urlpatterns = patterns('', 
    url(r'^ajax/$', views.ajax), 
    url(r'^$', views.index) 
) 

추가 settings.py

에서 몇 가지 중요한 설정을 잃었 생각 views.views.py

간결성을 위해
def index(request): 
    print('Rendering Index') 
    return render(request, 'index.html') 

def ajax(request): 
    print('rendering ajax') 
    return render(request, 'ajax.html'); 

, 나는 수입

+0

일부 .htaccess 파일이 있습니까? PD : 404 오류가 없습니다. 403 – Seazoux

+0

HtAccess 파일이 없습니다. 나는 형식화 된 html로 금지 된 (403) 오류를 얻는다. –

+0

코드는 어디에 있습니까? – catherine

답변

0

당신이 당신의 아약스 요청에 csrfmiddlewaretoken를 두지 않았다처럼 보이게 것을 제외했다.

var data = { 
     'csrfmiddlewaretoken': $('input[name="csrfmiddlewaretoken"]').val(), 
     // any other data 
    }, 
    url = '/api/create/'; 
    $.ajax({ 
     type: 'POST', 
     url: url, 
     data: data, 
    ... 

그리고 아약스 요청이

아니면 꾸밀 수 (index.html을 같이) 전송되는 페이지 템플릿에 {% csrf_token %}을 포함하는 것을 잊지 마세요 : 을 포함하는 가장 쉬운 방법은 @csrf_exempt 장식하여보기 :

from django.views.decorators.csrf import csrf_exempt 

@csrf_exempt 
def ajax(request): 
    print('rendering ajax') 
    return render(request, 'ajax.html'); 

이것은 당신이 아약스 요청에서 csrfmiddlewaretoken을 제외 할 수 있습니다

당신을 도울 희망.

관련 문제