Как избежать проблем с CORS при подключении к конечной точке MongoDB Realm GraphQL с помощью Axios?
У меня есть тестовая база данных в MongoDB Atlas. Используя службу MongoDB Realm, я смог настроить конечную точку GraphQL для базы данных.
Я могу выполнять запросы внутри своей песочницы (GraphiQL).
После настройки поставщика аутентификации ключа API...
... Мне удалось выполнить запросы извне из Postman, позвонив https://realm.mongodb.com/api/client/v2.0/app/<MY_APP_ID>/graphql
.
Однако, пытаясь сделать тот же вызов, используя аксиомы...
await axios({
method: 'POST',
url:
'https://realm.mongodb.com/api/client/v2.0/app/<MY_APP_ID>/graphql',
headers: {
apiKey: '<MY_API_KEY>',
'Content-Type': 'application/json',
},
data: {
query: `
{
item {
_id
name
description
}
}
`
}
})
... выдает ошибку CORS.
Что-то мне нужно настроить в Realm или заголовок, который мне не хватает, чтобы разрешить внешний доступ к конечной точке GraphQL из браузера?
0 ответов
Обнаружив учебник по Task Tracker (веб) в документации MongoDB Realm, я понял проблему. Мне нужно было использовать Realm javascript SDK для входа в Realm, используя свой идентификатор приложения и провайдер аутентификации.
Вы можете использовать любых поставщиков аутентификации, которые вы включили в панели управления Realm (имя пользователя / пароль, ключ API, Google и т. Д.), Но все они возвращают один токен-носитель при входе в систему. Этот токен-носитель позволяет выполнять междоменные запросы конечная точка GraphQL.
Я тоже сломался и решил установить Apollo Client, чтобы все разговаривать с конечной точкой. Источник решения React, которое я в конечном итоге реализовал, можно найти здесь. Он использует
RealmApp
общаться с Realm и
RealmApolloProvider
чтобы поговорить с GraphQL с правильным токеном аутентификации Realm.