728x90
django, CSRF token missing or incorrect, 403 forbidden, python
장고를 이용할 때 CSRF 문제로 인해 아래와 같이 403 forbidden Error가 발생하곤한다.
{"detail":"CSRF Failed: CSRF token missing or incorrect."}
이때 해결 방법을 공유하고자 한다.
403은 유저가 해당 요청에 대한 권한이 없을 때 발생하는 오류이다. CSRF는 무엇일까 CSRF는 다음과 같다.
CSRF : Cross-site request forgery
CSRF는 사이트간 요정 위조.
사이트 간 요청 위조는 웹사이트 취약점 공격의 하나이다.
사용자가 자신의 의지와는 무관하게 공격자가 의도한 행위를 특정 웹사이트에 요청하게 하는 공격을 말한다.
하지만 유저권한이 필요없는 사이트의 경우 CSRF를 사용할 필요가 없다. 따라서 우리는 django project에서 CSRF를 Except 시켜주면 된다.
방법은 두가지 방법이 있다.
첫 번째 방법 : settings.py와 views.py 수정
#settings.py
MIDDLEWARE = [
"django.middleware.security.SecurityMiddleware",
"django.contrib.sessions.middleware.SessionMiddleware",
"django.middleware.locale.LocaleMiddleware",
"django.middleware.common.CommonMiddleware",
#"django.middleware.csrf.CsrfViewMiddleware",
"django.contrib.auth.middleware.AuthenticationMiddleware",
"django.contrib.messages.middleware.MessageMiddleware",
"django.middleware.common.BrokenLinkEmailsMiddleware",
"django.middleware.clickjacking.XFrameOptionsMiddleware",
]
#views.py
from django.views.decorators.csrf import csrf_exempt
from django.utils.decorators import method_decorator
@method_decorator(csrf_exempt,name='dispatch')
class SavePoll(APIView):
settings.py의 csrf부분을 주석처리해주고 views.py에 다음과 같이 csrf_exempt를 넣어준다.
두 번째 방법 : settings.py만 수정
MIDDLEWARE = [
#"django.middleware.security.SecurityMiddleware",
"django.contrib.sessions.middleware.SessionMiddleware",
"django.middleware.locale.LocaleMiddleware",
"django.middleware.common.CommonMiddleware",
#"django.middleware.csrf.CsrfViewMiddleware",
#"django.contrib.auth.middleware.AuthenticationMiddleware",
"django.contrib.messages.middleware.MessageMiddleware",
"django.middleware.common.BrokenLinkEmailsMiddleware",
"django.middleware.clickjacking.XFrameOptionsMiddleware",
]
해당 세 middleware를 주석처리해주면 된다.
도움이 되셨다면 공감버튼 부탁드립니다. 감사합니다~!
728x90
'ETC > 에러 모음' 카테고리의 다른 글
UnicodeDecodeError: 'cp949' codec can't decode byte 0xec in position : illegal multibyte sequence (0) | 2020.12.16 |
---|---|
[C언어] Visual Studio scanf 에러 해결하는 방법 (0) | 2020.12.14 |
Pyautogui 클릭이 안될때 (0) | 2020.11.22 |
No module named 'pkg_resources.py2_warn' 에러 해결 (0) | 2020.11.16 |
win10 vue error 해결 (0) | 2020.10.27 |