【问题标题】:AWS API Gateway JS SDK get HTTP response codeAWS API Gateway JS SDK 获取 HTTP 响应代码
【发布时间】:2017-05-27 23:24:10
【问题描述】:

我正在使用 API Gateway 生成的 JS SDK。问题是当出现错误时,我得到一个 CORS 错误,我无法获取内部数据或状态码:

尽管网络标签中有一条消息,但通知数据为“”

我的代码:

AWS.config.region = "ap-northeast-2"
const cognitoParams = {
  IdentityPoolId: "ap-northeast-2:...",
  Logins: {
    "accounts.google.com": googleUser.getAuthResponse().id_token
  }
}

AWS.config.credentials = new AWS.CognitoIdentityCredentials(cognitoParams)

AWS.config.credentials.get(function () {

  const api = apigClientFactory.newClient({
    accessKey: AWS.config.credentials.accessKeyId,
    secretKey: AWS.config.credentials.secretAccessKey,
    sessionToken: AWS.config.credentials.sessionToken
  })
  api.ec2Get()
    .then(function (data) {
      console.log('data', data);
    })
    .catch(function (err) {
      console.error('err', err)
    })

【问题讨论】:

  • 您确定 AWS.CognitoIdentityCredentials 真的在返回凭证吗?
  • @UXDart 是的,访问密钥和秘密访问密钥中有数据。或者我还应该验证什么?
  • 您确定为您的 API Gateway 资源enabled CORS 并部署您的 API 到暂存区吗?

标签: javascript amazon-web-services aws-api-gateway


【解决方案1】:

也尝试通过该地区......所以在里面:

const api = apigClientFactory.newClient({
  accessKey: AWS.config.credentials.accessKeyId,
  secretKey: AWS.config.credentials.secretAccessKey,
  sessionToken: AWS.config.credentials.sessionToken,
  region: '...'
})

因为默认情况下,如果您不通过它,它会使用 'us-east-1'

【讨论】:

  • 您好,这解决了安全令牌无效的问题,但我发现当令牌过期时,我仍然无法通过 JS 获取错误消息或状态,因为它是一个 CORS 错误。有什么想法吗?
  • 好的,但是 CORS 错误可能是因为确实存在 CORS 错误,或者因为服务器返回的状态不同于 200.. 你在控制台中看到了什么?只有CORS错误?如果您收到状态 403,那么您知道令牌已过期
  • 如何从 API 网关生成的 SDK 错误中获取 HTTP 状态。从截图可以看出,status 为 0?
  • .catch(function (err) { if(err.status===403) { })有错误的情况需要检查...
  • 但问题是 err.status 在我的例子中是 0 如截图所示
猜你喜欢
  • 1970-01-01
  • 2020-10-25
  • 2017-01-28
  • 2018-03-31
  • 1970-01-01
  • 2017-06-27
  • 2017-03-14
  • 2018-06-09
  • 1970-01-01
相关资源
最近更新 更多