amazon-web-services - 对 Quicksight API 的 CORS 预检选项请求 aws-sdk 403 错误
问题描述
我正在尝试注册一个临时的 quicksight 用户并生成一个嵌入 url 以放入我的 React 应用程序中。但是,当调用注册用户 api 时,我收到 CORS 预检 OPTIONS 请求的 403 错误:
从源“ http://localhost:3000 ”访问“ https://quicksight.ap-southeast-2.amazonaws.com/accounts//namespaces/default/users ”的 XMLHttpRequest已被 CORS 策略阻止:响应预检请求未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。”
我也尝试过us-east-1
用作我的区域,但这也失败了。
用户使用 Cognito 凭据登录我的 web 应用程序。身份池具有关联的 IAM 角色,并且我已将策略附加到该角色,以授予注册新 quicksight 用户并获取嵌入 URL 的访问权限。我的 webapp 目前使用 aws-sdk 库通过 sts 承担角色,然后进行后续的 quicksight 调用。
React 应用程序托管在 Amplify 上
quicksightRegisterUser(data) {
var params = {
AwsAccountId: 'QQQ',
Email: 'XXX',
IdentityType: 'IAM' ,
Namespace: 'default',
UserRole: "READER",
IamArn: 'arn:aws:iam::YYY:role/ZZZ',
SessionName: 'XXX',
UserName:'XXX'
};
var quicksight = new QuickSight();
quicksight.registerUser(params, function (err, data1) {
if (err) {
console.log("err register user");
console.log(err);
} // an error occurred
else {
console.log("Register User1");
console.log(data1)
}
})
}
解决方案
正如@sideshowbarker 提到的,你不能从你的webapp 调用Quicksight API。
我找到的解决方案是设置一个 Lambda 来生成嵌入 URL,给定用户的 Cognito 用户名和密码。
可以在此处找到解决方案的完整详细信息和分步教程: https ://github.com/aws-samples/amazon-quicksight-embedding-sample
推荐阅读
- c - 为什么在这种情况下使用 memset
- jquery - 使用 Jquery 在 foreach MVC Razor 表中定位特定 td
- omnet++ - Castalia WBAN application | Getting Throughput
- javascript - Node spawn stdout on data not being reached when run from command line
- javascript - How to render a Twig template after AJAX call
- c++ - 在库中创建 CWnd
- django - Django Custom Setting Size Attribute on Model Form Not Working
- ms-access - 无法将自定义功能区应用于 MS Access 中的表单
- android - GridView 的 GetChildCount 只计算可见的孩子
- sqlite - update row if it exists else insert it sqlite