2017-10-29 6 views
1

요청 헤더는 다음과 같습니다.csrf가 헤더에있을 때 금지 된 (CSRF 쿠키가 설정되지 않았습니다.)

Accept:application/json, text/plain, */* 
Accept-Encoding:gzip, deflate, br 
Accept-Language:en-US,en;q=0.8 
Connection:keep-alive 
Content-Length:129 
Content-Type:text/plain 
Host:localhost:9000 
Origin:http://localhost:8000 
Referer:http://localhost:8000/ 
User-Agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36 
X-CSRFTOKEN:t5Nx0SW9haZTeOcErcBDtaq6psqBfeyuX4LRQ1WOOXq5g93tQkvcUZDGoWz8wSeD 

X-CSRFTOKEN은 있지만 장고는 여전히 CSRF 쿠키가 설정되지 않았다고 불평합니다. 장고는 어떻게됩니까?

settings.py에서 이름은 완전히 정확합니다.

CSRF_HEADER_NAME = "HTTP_X_CSRFTOKEN" 

답변

0

CSRF_COOKIE_SECURE이 true로 설정되어 있는지 확인하십시오.

CSRF_COOKIE_SECUREtrue이고 https 대신 http를 통해 사이트에 액세스하면 이러한 오류 메시지가 표시됩니다.
또는 (테스트 전용) csrf_exempt을 사용해야합니다.

+0

시도해보십시오. 나는 말 그대로 stackoverflow 및 구글의 모든 관련 문제를 통해 읽을 수 있지만 여전히 행운을 빌어 요. –

+0

@MervynLee Strange : 시도해 봤나? https://stackoverflow.com/a/30875830/6309 – VonC

+0

그들은 DRF의 문제에 직면 해 있습니다. 내가 실제로 reactjs와 서명 목적을 위해 백엔드 (django)에 POST 요청을 보내고 있습니다. 관리자 패널에 로그인하여 헤더가 x-csrf가 아니지만 Cookie로 명명 된 것을 확인했습니다. vcubes = JSfUYXtNIMa9NSDZWUMuVpclItFfpsaHGI8HRvznzMmszn5lH68Md9MdSEbOGdpB; sessionid = notinzk6uavo7c3zjpit484fj8dglag9. 나는이 방향으로이 문제를 조사하고있다. X-CSRF 헤더 이름을 Cookie로 바꾸었지만 브라우저 F12에 나타나지 않습니다. –