Запрещено (CSRF cookie не установлен.): для django login from javascript [duplicate]
Я пытаюсь получить доступ к логину сервера django с помощью javascript
axios.get('http://localhost:8010/get_csrf_token/').then((res)=>{
console.log(res.data['csrf_token']);
var data = {username:'admin@test.com',password:'testtest',
}
axios.defaults.headers.common['X-CSRF-TOKEN'] = res.data['csrf_token'];// set csrf_token in header.
axios.post('http://localhost:8010/login/',data).then(() =>{
console.log("test");
})
})
Однако этот код показывает ошибку, приведенную ниже.
Я установил заголовок X-CSRF-TOKEN, но он требует cookie?
Этот django-сервер не является сторонним, а находится под моим контролем, поэтому я могу изменять настройки djang-сервера.
Как я могу решить эту проблему?
Forbidden (CSRF cookie not set.): /login/
[WARNING][240326 200329] Forbidden (CSRF cookie not set.): /login/
[26/Mar/2024 20:03:29] "POST /login/ HTTP/1.1" 403 2882
обновить
Я проверил, установлен ли cookie, и установил withCredentials true. но все равно Forbidden (CSRF cookie not set.)
axios.get('http://localhost:8010/get_csrf_token/').then((res)=>{
document.cookie = `csrftoken=${res.data['csrf_token']}`;
console.log("cookie:",document.cookie); // to confirm cookie is set here.
var data = {username:'admin@test.com',password:'testtest'}
axios.defaults.headers.common['X-CSRF-TOKEN'] = res.data['csrf_token'];
axios.defaults.withCredentials = true
axios.post('http://localhost:8010/login/',data,{
withCredentials: true,
}).then(() =>{
console.log("test");
})
})