Я использую локальный сервер разработки (на моем компьютере) для внешнего интерфейса.Бэкэнд находится на другом сервере, и я отправляю запросы из внешнего интерфейса в бэкэнд, используя CORS
Работает нормально, но когда я передаю куки из внешнего интерфейса, он прошел неправильно: именно токен csrf отличается от того, что хранится в куки.
Примеры:
Cookiesна инструментах разработчика Chrome, вкладка Приложения: csrf_token: b2o3q06llj
Заголовки запроса:
Как видите, файл cookie заголовка отличается от данных, просматриваемых на вкладке приложения .X-Csrf-Token верен, но заголовок Cookie
неверен.Он должен содержать csrf_token
, который доступен для Dev tools > Application > Storage > Cookies
Настройка CORS в Nginx config (удаленный сервер):
if ($request_method ~* "(GET|POST)") {
add_header 'Access-Control-Allow-Origin' 'http://192.168.1.127:3000' always;
add_header 'Access-Control-Allow-Credentials' 'true' always;
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS' always;
add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range, X-Csrf-Token, Cache-Control' always;
add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range' always;
}
# Preflighted requests
if ($request_method = OPTIONS ) {
add_header "Access-Control-Allow-Origin" 'http://192.168.1.127:3000' always;
add_header "Access-Control-Allow-Credentials" 'true' always;
add_header "Access-Control-Allow-Methods" "GET, POST, OPTIONS, HEAD" always;
add_header "Access-Control-Allow-Headers" "Authorization, Origin, X-Requested-With, Content-Type, Accept, X-Csrf-Token, Cache-Control" always;
return 204;
}
Настройка Axios:
axios.create({
baseURL: window.location.protocol + '//' +window.location.hostname + (window.location.port ? ':' + window.location.port : '') + '/data',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
'X-Csrf-Token': <token>,
'X-Requested-With': 'XMLHttpRequest'
},
withCredentials: true
});
Я не могу понять, в чем проблема.Почему Axios не отправляет правильные куки?