我在 MongoDB Atlas 中有一个测试数据库。使用 MongoDB Realm 服务,我已经能够为数据库设置 GraphQL 端点。
我可以使用他们的沙箱 (GraphiQL) 在内部运行查询。
配置 API key 身份验证提供程序后...
...我能够从 Postman 外部运行查询,调用 https://realm.mongodb.com/api/client/v2.0/app/<MY_APP_ID>/graphql
.
但是,尝试使用 axios 进行相同的调用...
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 中配置某些内容或缺少 header 才能允许从浏览器对 GraphQL 端点进行外部访问?
最佳答案
发现 Task Tracker (web) tutorial 后在 MongoDB Realm 文档中我意识到了这个问题。我需要使用 Realm javascript SDK 使用我的应用程序 ID 和身份验证提供程序登录 Realm。
您可以使用在 Realm 仪表板中启用的任何身份验证提供程序(用户名/密码、API key 、Google 等),但它们都会在登录时返回单个不记名 token 。此不记名 token 允许跨GraphQL 端点的域查询。
我也崩溃了,决定安装 Apollo 客户端来完成与端点的所有通信。我最终实现的 React 解决方案的来源可以是 found here 。它使用 RealmApp
与 Realm 进行通信,并使用 RealmApolloProvider
使用正确的 Realm 身份验证 token 与 GraphQL 进行通信。
关于mongodb - 使用 Axios 连接到 MongoDB Realm GraphQL 端点时如何避免 CORS 问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63732978/