Axios отправляет неправильные куки - PullRequest
0 голосов
/ 24 мая 2018

Я использую локальный сервер разработки (на моем компьютере) для внешнего интерфейса.Бэкэнд находится на другом сервере, и я отправляю запросы из внешнего интерфейса в бэкэнд, используя CORS

Работает нормально, но когда я передаю куки из внешнего интерфейса, он прошел неправильно: именно токен csrf отличается от того, что хранится в куки.

Примеры:

Cookiesна инструментах разработчика Chrome, вкладка Приложения: csrf_token: b2o3q06llj

enter image description here

Заголовки запроса:

enter image description here

Как видите, файл 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 не отправляет правильные куки?

...