使用 Azure 静态 Web 应用程序数据 API 生成器托管的 GraphQL 端点的 CORS 问题

问题描述 投票:0回答:1

我有一个静态 Web 应用程序,使用 Blazor 8 WASM 作为前端,并使用连接到 Cosmos DB NoSQL 数据库的 Data API Builder GraphQL 端点作为后端。我能够成功部署此应用程序和 GraphQL API。我可以使用 Postman 直接通过 Internet 成功查询 GraphQL API。我的 Blazor WASM 客户端应用程序能够成功查询 GraphQL API 并在部署的“生产”应用程序中显示结果 (https://mypublicurl.azurestaticapps.net)。

我的问题是,当我在开发环境中运行应用程序(使用 http://localhost:port#)并且它调用生产 API 时,它失败并出现错误

从源“http://localhost:4280”获取“https://mypublicurl.azurestaticapps.net/data-api/graphql”的访问已被 CORS 策略阻止:对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。如果不透明响应满足您的需求,请将请求模式设置为“no-cors”以在禁用 CORS 的情况下获取资源。

我尝试在文件 staticwebapp.database.config.json 中添加 CORS 主机的一些变体。例如,

"host": { "cors": { "origins": ["http://localhost:4280", "http://localhost:5196"], "allow-credentials": false },

我尝试过配置文件中带或不带尾部斜杠的变体。我尝试使用普通的“dotnet watch”命令运行开发客户端,并使用“swa start ...”运行本地 SWA 模拟器。

还没有运气。

有人知道如何解决这个问题吗?

我可以使用 VS 2022 或 VS Code 中的新模板项目并遵循有关使用 Data API Builder 创建 GraphQL 端点的 Microsoft 文档来重现这一点。

graphql cors azure-static-web-app data-api-builder
1个回答
0
投票

是的,我与 Microsoft 支持团队合作,staticwebapp.database.config.json 中的 CORS 设置不适用于静态 Web 应用程序。他们的路线图上包括将其用于 Data API Builder 的静态 Web 应用程序部署,但截至 2023 年 12 月我的聊天,还没有支持。顺便说一句,您可以使用代理服务器来交付 CORS。

© www.soinside.com 2019 - 2024. All rights reserved.