2017-09-19 7 views
0

html로 동일한 페이지에서 아약스를 사용해도 작동합니다. 이것 같이;Django 403 금지 된 오류

<html> 
    <head> 
    ... 
    </head> 
    <body> 
    .... 
    <script> 

    $.ajax({ 
     url: /test/, 
     method: 'POST', 
     headers: {'X-CSRFToken': '{{ csrf_token }}'}, 
     data: { name: a, surname: b}, 
     dataType: 'json', 
     success: function (data) { 
      getList(data); 
     } 
    }); 
    </script> 
    </body> 
</html> 

외부 자바 스크립트와 동일한 자바 스크립트를 호출 해 봅니다. 작동하지 않습니다. 왜?

<html> 
    <head> 
    ... 
    </head> 
    <body> 
    .... 
    <script src="{% static 'js/test.js' %}"></script> 
    </body> 
</html> 
+0

django에서 정적 파일을 올바르게 구성 했습니까? –

+0

정적 파일이 올바르게 구성되었습니다. 403 오류가 있습니다. – Halim

+0

CSRF 토큰을 자동으로 추가하는 [이 문서에는이 해결책이 있습니다] (https://docs.djangoproject.com/en/1.11/ref/csrf/#setting-the-token-on-the-ajax-request) 모든 AJAX 호출. – dspacejs

답변

2

같은 전역 변수로 script 태그에서 HTML 페이지에서 전역 변수로 {{ csrf_token }} 정의 : - 다음

var generated_csrf_token = "{{ csrf_token }}"; 

그리고 당신의 .js에 호출 파일,

headers: {'X-CSRFToken': generated_csrf_token}, 

하지만 AJAX 호출을 문서 준비 함수 내에 넣어야합니다. $(document).ready(function() {***here***}

그러면 모든 js 파일에 generated_csrf_token이라는 이름으로 액세스 할 수 있습니다.

희망이 있습니다 :-)

+1

감사합니다. 그것은 일이다. – Halim