reactjs - 授权应用程序调用 API Azure AD 时出现 CORS 错误?
问题描述
在 React 中通过 fetch() 调用 API 但出现 CORS 错误。 https://login.microsoftonline.com/tenant_id /oauth2/v2.0/authorize?client_id=xxxxxxxxxxxxxxxxxxxxx&response_type=code&redirect_uri=http://localhost:3050&scope=user.Read.All&response_mode=query
上面的 URL 是由 Postman 制作的,如果直接粘贴在浏览器上可以正常工作。
2.有没有办法安全地获取代码,即在正文中而不是在查询中获取响应代码?
尝试将 Allow-access-origin 的获取中的标头传递给 *.
解决方案
我们需要在 react 中使用 msal来避免 CORS 问题。微软还提供了一些 react 应用的示例,你可以看这个文档。在这里我测试了这个示例代码。我还注册了一个 azure 广告应用程序并设置了重定向 url http://locahost:3000,这是我的配置:
正如您在 App.jsx 中看到的那样,它使用下面的代码生成访问令牌并使用它调用图形 api,无需在浏览器中显示验证代码,因为令牌是静默获取的。我认为这可以满足您的要求。
function RequestProfileData() {
// Silently acquires an access token which is then attached to a request for MS Graph data
instance.acquireTokenSilent({
...loginRequest,
account: accounts[0]
}).then((response) => {
callMsGraph(response.accessToken).then(response => setGraphData(response));
});
}
========================更新==================
对于您的问题 2,我认为这可能会对您有所帮助:
推荐阅读
- sql - MSSQL - 获取另一个表中字段中第一个较大值的值
- android - 无法在类中实例化接口侦听器
- visual-studio - 如何使用 Concert CPLEX 在 C++ 中获取变量分支
- ansible - Ansible替换特定文件中的文本块
- powerbi - 如何根据多过滤器报告显示上一个销售期间(会计年度)
- kubernetes - Windows 10 中的 Kubelet
- r - 具有预先指定的截止值和两位小数的 pROC 包
- javascript - 如果 HTML 值在一个使用 javascript 包含特定 href 的类中,如何编辑它?
- api - 使用 encoding.com golang 包装器
- azure - 使用资源管理器在 azure 中获取具有关系的资源