Как избежать проблем с 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.

Другие вопросы по тегам