"detail": "CSRF Failed: CSRF token missing or incorrect."
"detail": "CSRF Failed: CSRF token missing or incorrect."
Postman으로 API 요청 테스트를 하면서 위에 에러를 마주했다. 에러의 원인은 생각보다 간단했다. CSRFToken!!
처음 Django를 시작했을 때 CSRF에 대해서 애를 먹었고, 프론트와 연동하면서 CSRF가 프레임워크마다 다른 이름으로 불린다는 것을 알게 되고 어느 정도 마스터를 했다 생각했는데, 갑자기 CSRF 에러를 마주하니깐 순간 머리가 하얘졌다.
분명 제대로 설정하였고 문제가 되는 부분이 없다고 생각했는데, 과거에는 swagger를 사용하다가 postman으로 테스트를 하니 잘 안 되는 것이었다. 그래서 설마 하고 postman관련해서 검색을 해보니, Postman에서는 csrftoken을 자동으로 헤더에 추가해서 보내지 않는 다는 것이였다.
인터넷을 찾아보면 Tests 스크립트에 아래와 같은 코드를 입력하고 Headers에 X-CSRFToken을 추가하면 된다는 것이였다.
var xsrfCookie = postman.getResponseCookie("csrftoken");
postman.setEnvironmentVariable('csrftoken', xsrfCookie.value);
하지만 결론적으로 나는 해결되지 않았다.
CSRF token from the 'X-Csrftoken' HTTP header incorrect
아래와 같은 에러가 발생한 것이다.
CSRF token from the 'X-Csrftoken' HTTP header incorrect
그러다 알게 된 건데, Postman의 스크립트 문법이 조금 바뀐 것이었다. 그래서 나는 아래와 같이 응답 스크립트에 아래와 같이 작성하여 주었다.
Postman에서도 좌측 아래 Console창이 있어서 직접 찍어보면서 확인할 수 있다는 것도 알게 되었다.

var csrftoken = pm.cookies.get("csrftoken");
pm.globals.set("csrftoken", csrftoken);
매 요청마다 응답 스크립트를 작성하는 것은 매우 비효율적이다. 그래서 나는 하나의 폴더를 만들고, 그 폴더에 응답 스크립트를 지정함으로써, 하위 리퀘스트들에 대해 일괄 적용하는 방식으로 진행하였다.
이제, 하위 리퀘스트에서 Header에 csrftoken을 작성해 주면 된다.

공용 Headers를 설정하는 방법은 아직 몰라서, 리퀘스트마다 설정해줘야 한다는 문제가 있지만 스크립트를 한 번에 적용시킴으로써 많이 편해졌다고 생각한다.
ps.
추후, 공동 Headers를 적용하는 방법을 알게 되면 업데이트해야지
2024.11.04
아래처럼 최상위 폴더의 인증 방식을 API Key로 선택해서 아래처럼 입력해주니 되었다.

'Django > API Docs' 카테고리의 다른 글
[Postman] Swagger와 차이점 및 Postman으로 API 문서 작성 (0) | 2024.04.16 |
---|---|
drf_yasg package 정리 (0) | 2024.04.09 |
DRF drf-yasg swaager access token(JWT) 입력 받기 (0) | 2024.03.20 |
DRF API Document drf-spectacular (0) | 2023.11.27 |
Django 프로젝트에 Swagger 적용하기 (0) | 2023.05.03 |
"detail": "CSRF Failed: CSRF token missing or incorrect."
"detail": "CSRF Failed: CSRF token missing or incorrect."
Postman으로 API 요청 테스트를 하면서 위에 에러를 마주했다. 에러의 원인은 생각보다 간단했다. CSRFToken!!
처음 Django를 시작했을 때 CSRF에 대해서 애를 먹었고, 프론트와 연동하면서 CSRF가 프레임워크마다 다른 이름으로 불린다는 것을 알게 되고 어느 정도 마스터를 했다 생각했는데, 갑자기 CSRF 에러를 마주하니깐 순간 머리가 하얘졌다.
분명 제대로 설정하였고 문제가 되는 부분이 없다고 생각했는데, 과거에는 swagger를 사용하다가 postman으로 테스트를 하니 잘 안 되는 것이었다. 그래서 설마 하고 postman관련해서 검색을 해보니, Postman에서는 csrftoken을 자동으로 헤더에 추가해서 보내지 않는 다는 것이였다.
인터넷을 찾아보면 Tests 스크립트에 아래와 같은 코드를 입력하고 Headers에 X-CSRFToken을 추가하면 된다는 것이였다.
var xsrfCookie = postman.getResponseCookie("csrftoken");
postman.setEnvironmentVariable('csrftoken', xsrfCookie.value);
하지만 결론적으로 나는 해결되지 않았다.
CSRF token from the 'X-Csrftoken' HTTP header incorrect
아래와 같은 에러가 발생한 것이다.
CSRF token from the 'X-Csrftoken' HTTP header incorrect
그러다 알게 된 건데, Postman의 스크립트 문법이 조금 바뀐 것이었다. 그래서 나는 아래와 같이 응답 스크립트에 아래와 같이 작성하여 주었다.
Postman에서도 좌측 아래 Console창이 있어서 직접 찍어보면서 확인할 수 있다는 것도 알게 되었다.

var csrftoken = pm.cookies.get("csrftoken");
pm.globals.set("csrftoken", csrftoken);
매 요청마다 응답 스크립트를 작성하는 것은 매우 비효율적이다. 그래서 나는 하나의 폴더를 만들고, 그 폴더에 응답 스크립트를 지정함으로써, 하위 리퀘스트들에 대해 일괄 적용하는 방식으로 진행하였다.
이제, 하위 리퀘스트에서 Header에 csrftoken을 작성해 주면 된다.

공용 Headers를 설정하는 방법은 아직 몰라서, 리퀘스트마다 설정해줘야 한다는 문제가 있지만 스크립트를 한 번에 적용시킴으로써 많이 편해졌다고 생각한다.
ps.
추후, 공동 Headers를 적용하는 방법을 알게 되면 업데이트해야지
2024.11.04
아래처럼 최상위 폴더의 인증 방식을 API Key로 선택해서 아래처럼 입력해주니 되었다.

'Django > API Docs' 카테고리의 다른 글
[Postman] Swagger와 차이점 및 Postman으로 API 문서 작성 (0) | 2024.04.16 |
---|---|
drf_yasg package 정리 (0) | 2024.04.09 |
DRF drf-yasg swaager access token(JWT) 입력 받기 (0) | 2024.03.20 |
DRF API Document drf-spectacular (0) | 2023.11.27 |
Django 프로젝트에 Swagger 적용하기 (0) | 2023.05.03 |