Запрещено (CSRF cookie не установлен.), но он установлен Axios в React (DRF)
Сначала я получаю csrf cookie, вызывая конечную точку /auth/session/
затем я устанавливаю заголовок для csrf cookie, фактическая ошибка возникает, когда я пытаюсь войти
Request
import axios from 'axios';
import Cookies from "universal-cookie";
const cookies = new Cookies();
const Login = () => {
axios
.get('http://localhost:8000/auth/session/')
.then(({ data }) => {
console.log(data)
})
.catch((error) => {
console.log(error);
});
axios.defaults.xsrfHeaderName = 'X-CSRFToken'
axios.defaults.xsrfCookieName = 'csrftoken'
axios.defaults.headers.common['X-CSRFToken'] = cookies.get('csrftoken');
const onSubmit = object => {
axios.post(
'http://localhost:8000/auth/login/',
object,
)
.then(res => {
if (res.status === 201)
alert('Successfully authorized')
else
Promise.reject()
})
.catch(err => alert(err))
}
фактические заголовки запроса image
Ответ
Forbidden (CSRF cookie not set.): /auth/login/
news-board-web-1 | [16/Oct/2022 15:40:58] "POST /auth/login/ HTTP/1.1" 403 2870
Настройки
CSRF_TRUSTED_ORIGINS = [
'http://localhost:3000',
'http://localhost:3001',
]
CORS_ALLOW_ALL_ORIGINS = True
CORS_ALLOW_HEADERS = list(default_headers) + [
'X-CSRFToken'
]
CORS_EXPOSE_HEADERS = ["Content-Type", "X-CSRFToken"]
CSRF_COOKIE_HTTPONLY = False
CORS_ALLOW_CREDENTIALS = True
Для логина я использую стандартный логин rest framework, который отлично работает с Postman, но я не могу найти причину, почему он не работает с axios
path('auth/', include('rest_framework.urls')),