CSRF 토큰 오류

CSRF 토큰 오류

에러 내용

django 에서 DEBUG 옵션을 True로 둔 뒤, POST 요청을 보내면 아래와 같이 에러 내용이 출력된다.

1. 웹 브라우저에서 접속 시 403 error

CSRF verification failed. Request aborted

2. django log

Forbidden (Referer checking failed - https://kkjnginx.link/api/upload/ does not match any trusted origins.): /api/upload/

문제 해결을 위한 발자취

1. 처음엔 template에 csrf_token 태그를 안넣어줬나 봤더니 이미 넣어준 상태였다.

{% block content %} Upload Image {% csrf_token %} {{ form }} Upload Image {% endblock %}

2. 토큰 전송이 안되는지를 확인했는데 그것도 아니었다.

3. except 데코레이터를 추가하면 된다고 했지만, 좋은 방법은 아닌거 같아서 시도해보지 않았다.

from django.views.decorators.csrf import csrf_exempt from django.utils.decorators import method_decorator @method_decorator(csrf_exempt) def some_view(request): ...

4. settings.py 미들웨어 주석처리 또한 좋은 방법이 아닌거 같아서 시도하지 않았다.

해결 방법

1. CSRF_TRUSTED_ORIGINS 에 호스트네임을 추가해서 해결했다. - 링크

ALLOWED_HOSTS = ['django'] CSRF_TRUSTED_ORIGINS = ['kkjnginx.link']

from http://not-to-be-reset.tistory.com/552 by ccl(A) rewrite - 2021-12-21 16:00:35