Как установить междоменный куки в Коа - PullRequest
0 голосов
/ 15 мая 2018

У меня есть Koa и GraphQL API с распознавателем аутентификации, который добавляет маркеры аутентификации в файлы cookie ответов.

Мой API работает на http://localhost:3000, а мой интерфейс работает на http://localhost:3001. Чтобы сделать это, мне нужно было добавить флаг withCredentials в мой запрос API, а также настроить параметры Koa / Cors на { origin: false, credentials: true }. Без этих настроек я бы получил ошибку CORS, которая меня смущает, потому что они оба на localhost, так что технически один домен ...?

Будет несколько внешних интерфейсов, использующих этот API, и он должен будет аутентифицироваться и получить маркер аутентификации, установленный в куки. Когда я подставляю свое доменное имя как http://app1.dev & http://app2.dev, оба из которых вызывают API на http://localhost:3000, токен аутентификации устанавливается в куки-файлах ответа, но браузер не сохраняет куки, как это было, когда все было localhost .

В своем API я использую @koa/cors для настройки своих сердечников, а затем задаю следующее:

app.use(cors({ origin: false, credentials: true }))

В моем приложении переднего плана реагирования у меня есть функция запроса, которую я использую для всех моих запросов GraphQL:

const request = query => {

  const request = axios.create({
    baseURL: apiUrl,
    headers: {'X-apikey': apiKey},
    withCredentials: true,
  });

  return request.post('/graphql', { query })
    .then(res => res.data)
    .catch(console.error)
}

Почему файлы cookie не устанавливаются в браузере?

РЕДАКТИРОВАТЬ: Обновил мой запрос axios, чтобы создать экземпляр axios и пытается установить с помощьюCredentials. Я все еще не вижу параметр учетных данных в моем запросе в инструментах разработки, хотя. Я подозреваю, что это может быть проблемой?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...