Written by
django-style
on
on
django Forbidden (CSRF token missing or incorrect.)
django Forbidden (CSRF token missing or incorrect.)
순수 javascript를 사용하여 view단과 데이터를 주고 받는 중
django Forbidden (CSRF token missing or incorrect.) 에러가 발생 하였다.
제이쿼리나 form을 사용하여 {{ csrf_token }} 값을 넘겨주면 되지만
javascript만을 사용하여 값을 넘기고 싶었다.
제이쿼리를 사용했을 때 csrf_token을 넘겼던 방법
마찬가지로 POST방식으로 통신을 할 때 "csrfmiddlewaretoken" 값을 사용하여 setRequestHeader 넣어주고 있었다.
하지만 해당 방법이 아닌 "X-CSRFToken"의 값으로 넘겨 주어야 했다.
그렇다면 csrfmiddlewaretoken과 X-CSRFToken의 차이점은 무엇일까?
Django의 공식 문서를 살펴보면
https://docs.djangoproject.com/en/3.2/ref/csrf/
csrfmiddlewaretoken는 content의 값과 비교해서 JSON을 처리하기 전 HTML 패킷의 기준으로 content를 파싱하기때문에 값을 인식 못하고 ''을 처리한다고 한다.
>> 참고 : http://egloos.zum.com/killins/v/3092087
따라서 X-CSRFToken와 csrfmiddlewaretoken의 차이를 비교하는건 잘못된 것 같다고 생각한다.
from http://integer-ji.tistory.com/362 by ccl(A) rewrite - 2021-12-01 23:00:55