У меня есть 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. Я все еще не вижу параметр учетных данных в моем запросе в инструментах разработки, хотя. Я подозреваю, что это может быть проблемой?