0
다음과 같은 상황이 있습니다.백엔드에서 보낸 쿠키가 프론트 엔드에 설정되지 않았습니다.
부 :
- 로컬 호스트 : 3000
- 로컬 호스트 (반작용) 프론트 엔드 : 8000 백엔드입니다 (장고) 나는 성공적인 도메인 간 GET을
- 은 (내가 django- 사용하고 있습니다 CORS 헤더 패키지) 응답 헤더의
부 :
Set-Cookie: csrftoken=token; expires=Fri, 16-Feb-2018 10:56:00 GMT; Max-Age=31449600; Path=/
- 제 3 자 쿠키 및 사이트 데이터를 허용하도록 설정되어 있지만 브라우저에 쿠키 csrftoken이 설정되어 있지 않습니다 (브라우저가 다른 도메인의 쿠키를 무시하기 때문에 브라우저에 설정된 경우). Chrome 설정)
- POST 인해 설정되지 CSRF 쿠키에 실패
파트 II :
- 나는 쿠키가 수동으로
- 모든 것을 완벽 01 일 설정 23,516,
이 내 아약스 요청입니다 :
초기 GET 후 쿠키를 읽고 브라우저에서 설정할 수있는 방법은jQuery.ajaxSetup({
beforeSend: function(xhr, settings) {
xhr.setRequestHeader("X-CSRFToken", csrftoken);
}
});
jQuery.ajax({
url: url,
type: 'POST',
data: {attr: value, csrfmiddlewaretoken: csrftoken},
crossDomain: true,
xhrFields: {
withCredentials: true
}
})
이 인가?
내가 CORS_ALLOW_CREDENTIALS = TRUE 및 CORS_ORIGIN_WHITELIST = (이 : '로컬 호스트 3000' '127.0.0.1을 : 3000 ')하지만 도움이되지 않습니다. – dnmh
아, 알았어 ... 내 아약스 전화에서 이걸 가지고 있지 않았다. xhrFields : { withCredentials : true } – dnmh