그런데 jquery 나 다른 Ajax 와 같이 외부 스크립트에서는 위의 태그를 사용하지 못하는데, 이를 해결 하는 방법으로 아래 공식 문서가 있기는 하다.
https://docs.djangoproject.com/en/dev/ref/contrib/csrf/#ajax
위 스크립트를 통해서 해결을 할 수 있다고는 하는 것 같은데, 너무 복잡하게 되어 있다.
그러나 위 방법 말고도 다른 방법이 있는데, 문서에 보면 csrfmiddlewaretoken 이라는 이름으로 특정 값을 POST 시에 데이터로 같이 보내도록 되어 있다.
그리고 {{ csrf_token }} 변수가 그 값을 가지고 있는데, 이전에 올렸던 글처럼 변수를 미리 선언하여 외부 스크립트에 사용하는 방식으로 이를 해결할 수 있다.
템플릿:
<script type="text/javascript"> var csrf_token = "{{ csrf_token }}"; </script> <script type="text/javascript" src="/js/test.js">외부 스크립트:
if (this.csrf_token === undefined) var csrf_token = ''; // POST로 보낼 데이터 var data = { 'csrfmiddlewaretoken': csrf_token }
이러한 방법(혹시 편법 일수도...?)으로 해결할 수 있다.
참고자료: http://stackoverflow.com/a/5407506
댓글 없음:
댓글 쓰기