리셋 되지 말자

CSRF 토큰 오류 본문

Django

CSRF 토큰 오류

kyeongjun-dev 2021. 12. 21. 15:54

에러 내용

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 %}
    <h2>Upload Image</h2>
    <form method="post" enctype="multipart/form-data">
        {% csrf_token %}
        {{ form }}
        <button type="submit">Upload Image</button>
    </form>
{% 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']

 

'Django' 카테고리의 다른 글

원격실습 환경 구성  (0) 2022.04.16
ORM  (0) 2022.04.16
celery shared_task 수집하기  (0) 2021.10.12
django local image database save  (0) 2021.10.12
filter, get 차이  (0) 2021.10.12
Comments