AWS-SDK 403 CORS 预检选项请求到 Quicksight 时出错 API
aws-sdk 403 Error for CORS preflight OPTIONS request to Quicksight API
我正在尝试注册一个临时的 quicksight 用户并生成一个嵌入 url 以放入我的 React 应用程序。但是,在调用注册用户 api 时,CORS 预检选项请求出现 403 错误:
Access to XMLHttpRequest at 'https://quicksight.ap-southeast-2.amazonaws.com/accounts//namespaces/default/users' from origin 'http://localhost:3000' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource."
我也试过使用 us-east-1
作为我的区域,但也失败了。
用户使用 Cognito 凭据登录我的网络应用程序。身份池有一个关联的 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 所述,您不能从您的网络应用程序调用 Quicksight API。
我找到的解决方案是 set-up Lambda 生成嵌入 URL,给定用户的 Cognito 用户名和密码。
解决方案的完整详细信息和 step-by-step 教程可在此处找到:
https://github.com/aws-samples/amazon-quicksight-embedding-sample
我正在尝试注册一个临时的 quicksight 用户并生成一个嵌入 url 以放入我的 React 应用程序。但是,在调用注册用户 api 时,CORS 预检选项请求出现 403 错误:
Access to XMLHttpRequest at 'https://quicksight.ap-southeast-2.amazonaws.com/accounts//namespaces/default/users' from origin 'http://localhost:3000' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource."
我也试过使用 us-east-1
作为我的区域,但也失败了。
用户使用 Cognito 凭据登录我的网络应用程序。身份池有一个关联的 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 所述,您不能从您的网络应用程序调用 Quicksight API。
我找到的解决方案是 set-up Lambda 生成嵌入 URL,给定用户的 Cognito 用户名和密码。
解决方案的完整详细信息和 step-by-step 教程可在此处找到: https://github.com/aws-samples/amazon-quicksight-embedding-sample