[django] Forbidden (CSRF cookie not set.) 오류 해결하기

 

간단한 sign up app(post로 가입, get으로 리스트 확인)을 만들었는데 post시 다음과 같은 오류가 발생했다.

[오류] Forbidden (CSRF cookie not set.): /login/
[10/Jun/2020 16:19:22] "POST /login/ HTTP/1.1" 403 2864

status code 403은 유저가 해당 요청에 대한 권한이 없다는 뜻이다. 즉 뭔가 권한을 인증할만한 토큰 같은게 필요하다는 뜻..!

이러한 오류가 뱔생한 이유는 django의 초기 설정에 CSRF validation이 기본적으로 설정되어있기 때문이다.

CSRF(Cross-site request forgery)

CSRF는 사이트간 요정 위조를 말한다. 사이트 간 요청 위조는 웹사이트 취약점 공격의 하나로, 사용자가 자신의 의지와는 무관하게 공격자가 의도한 행위를 특정 웹사이트에 요청하게 하는 공격을 말한다. 유명 경매 사이트인 옥션에서 발생한 개인정보 유출 사건에서 사용된 공격 방식 중 하나다.

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

하지만 CSRF가 굳이 필요없다면 해제해주면 된다. 나는 post 메소드가 담긴 MainView class에서만 해제해주고 싶었기 때문에 해당 class에 다음과같이 decorator를 적용해주었다.

django의 CSRF validation을 해제하기위한 더 다양한 방법은 여기를 참조하자!

+) 업데이트

그냥 간단히 프로젝트 폴더의 settings.py에 가서 MIDDLEWARE 부분에서 csrf부분을 주석처리 해주면 된다.

[출처] https://velog.io/@langssi/django-Forbidden-CSRF-cookie-not-set.-%EC%98%A4%EB%A5%98-%ED%95%B4%EA%B2%B0

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED