-
[Django] postman 로그인 API CSRF token missing 오류 해결Django 개발 2022. 2. 21. 10:42
postman에서 django-rest-auth를 사용하여 로그인 url로 데이터를 전송했더니 아래와 같은 오류가 표시되었다.
"detail": "CSRF Failed: CSRF token missing or incorrect."
원인을 서치해보니 DEFAULT_PERMISSION_CLASSES 설정 때문이었다. postman을 사용할 때만 임시로 SessionAuthentication을 주석처리한 후 BasicAuthentication으로 테스트해볼 수도 있지만 이왕이면 깔끔한 해결 방법을 찾고 싶었다.
REST_FRAMEWORK = { 'DEFAULT_AUTHENTICATION_CLASSES': ( 'rest_framework.authentication.SessionAuthentication', ), }
StackOverflow 참고
답변 작성자도 "Permanent Solution: If you are using Postman, "이라고 말하고 있다.
'DEFAULT_AUTHENTICATION_CLASSES': [ # 'rest_framework.authentication.SessionAuthentication', 'rest_framework.authentication.BasicAuthentication', ]
해결방법
CSRF token은 전송할 때마다 갱신되기 때문에 매번 token 값을 수정해주지 않고 자동화할 수 있는 방법이 필요하다. 일단 Headers 탭에 새로운 변수를 추가해준다.
X-CSRFToken - {{csrftoken}}
그 다음 Tests 탭으로 들어가 아래 코드를 추가해주면 쿠키에서 csrftoken을 받아 postman 변수에 저장해주는 것이다.
var xsrfCookie = postman.getResponseCookie("csrftoken"); postman.setGlobalVariable('csrftoken', xsrfCookie.value);
반응형'Django 개발' 카테고리의 다른 글
[Pycharm]디버깅 No such file or directory 오류 해결 (0) 2022.05.20 [Docker] No such file or directory: 'docker' 오류 해결 (0) 2022.04.25 [Django] DRF jwt 인증방식을 이용한 로그인, 회원가입 구현하기 (0) 2022.03.28 [Django] Django serialize를 사용하여 queryset을 json으로 변경하기 (0) 2021.09.02 [Django] Ajax serialize를 사용하여 form 데이터 전송하기 (0) 2021.09.01