javascript - Azure SDK for Node - Key Vault Management - CORS preflight:服务器响应状态为 400(错误请求)
问题描述
我正在尝试创建一个具有 div 的 React.js 应用程序:
<div onClick={this.handleClick} />
在函数内部,我从 Azure GitHub 复制了代码:
https://github.com/Azure/azure-sdk-for-node/tree/master/lib/services/keyVaultManagement
import * as msRestAzure from "ms-rest-azure";
import KeyVaultManagementClient from "azure-arm-keyvault";
public handleClick(evt: any): void {
// Interactive Login
let client: any;
msRestAzure.interactiveLogin().then((credentials) => {
client = new KeyVaultManagementClient(credentials, "my-subscription-id");
return client.vaults.list();
}).then((vaults) => {
console.dir(vaults, {depth: null, colors: true});
return;
})
}
当我单击<div>
它时,它会在 Chrome 控制台中引发以下错误。
login.microsoftonline.com/common/oauth2/devicecode?api-version=1.0:1 加载资源失败:服务器响应状态为 400(错误请求)
localhost/:1 无法加载 https://login.microsoftonline.com/common/oauth2/devicecode?api-version=1.0:对预检请求的响应未通过访问控制检查:否 'Access-Control-Allow-Origin ' 请求的资源上存在标头。因此,不允许访问源“ http://localhost ”。响应的 HTTP 状态代码为 400。如果不透明的响应满足您的需求,请将请求的模式设置为“no-cors”以获取禁用 CORS 的资源。
localhost/:1 Uncaught (in promise) TypeError: Failed to fetch
我确实理解问题是我正在尝试调用与同一来源不匹配的 API http://localhost/
,因此它拒绝。
该应用程序是用 webpack(没有特殊的东西)、React.js、Typescript、Less 构建的。它托管在 IIS 中,只需创建一个应用程序并指向构建文件夹即可。
我在问,我怎样才能让它工作,因为我不能像Access-Control-Allow-Origin:
任何请求一样添加标头,因为实现在 npm 包中。
任何指导表示赞赏。谢谢。
解决方案
目前,由于 CORS 限制,您无法从浏览器端 Web 应用程序使用Azure Key Vault REST API。
Azure Key Vault 反馈站点上已经请求添加 CORS 支持,您可以对此进行投票。
作为一种解决方法,您可以创建一个在服务器上运行并将您的请求代理到 Key Vault 的小型 Web 应用程序。我为此创建了一个小型 PHP 应用程序,我将很快在 GitHub 上分享。(我将使用链接更新帖子。)
您链接的示例是一个 Node.js 应用程序,它可以作为应用程序运行,但不能在浏览器中运行。
推荐阅读
- python - 是否可以在 Python 中创建一个实例方法,该方法将一个实例变量作为参数,例如:var.method()?
- python - 将年转换为月;数年到数天使用 python
- emacs - 在 Spacemacs/Emacs 中,如何将一个长字符串分解为较短的相同宽度的多行字符串?
- laravel - Laravel 使用当前语言动态更改 URL 语言
- asp.net-mvc - 我已经安装了 autoFac 和 AutoFac.Mvc5 但 RegisterControllers() 方法不可用
- wordpress - 我可以根据他们最近的搜索或保存/收藏的帖子显示 wordpress 帖子吗
- javascript - 如何在事件oninput的文件输入值之前添加值
- python - 使用 wptools 时出现 SSL 证书问题
- vhdl - VHDL错误“索引名称返回一个类型与“std_logic_vector”不匹配的值,目标表达式的类型”
- html - 是否可以确保按钮组中的按钮相同?