AWS API Gateway {“error”:“缺少身份验证令牌”}

时间:2017-11-15 15:21:40

标签: ios swift amazon-web-services lambda aws-lambda

当我通过浏览器单击AWS API网关POST方法URL时,我一直不断收到“缺少身份验证令牌”错误。我将“AUTH”设置为none,它通过Postman完全正常,但不是浏览器。问题是我正在使用swift来触发该方法,它似乎根本没有到达网关(没有登录CloudWatch),我不认为我的代码是错误的(或者可能是)。如果有人能够指出我的错误或解决这个问题,我会非常感激。

P.S。我的lambda函数工作得很好,我键入了正确的URL(例如代码中的一个)

这是我的代码:

func postNonceToServer(paymentMethodNonce: String) {

    let paymentURL = URL(string: "https://example-url.us-east-1.amazonaws.com/prod/create-transaction")!
    var request = URLRequest(url: paymentURL)
    request.httpBody = "\(paymentMethodNonce)".data(using: String.Encoding.utf8)
    request.httpMethod = "POST"
}

3 个答案:

答案 0 :(得分:0)

这主要是因为CORS问题。

请在您的API网关中启用CORS,如下所示。启用CORS后,请重新部署API

如果您没有添加OPTIONS,请按照以下步骤操作(如果OPTIONS已经添加了CORS),

  • 在/ services资源
  • 下创建一个新的OPTIONS方法
  • 在OPTIONS方法中创建并填充Access-Control-Allow-Origin / Method / Headers。

创建OPTIONS后启用CORS,如下所示

enter image description here

答案 1 :(得分:0)

在我看来,这应该是URL本身的一个问题。我能想到:

1-请确保通过将URL打印到控制台并将其粘贴到浏览器URL栏中来正确解析URL。 (我不知道swift)

2-确保“example-url”中包含“execute-api”,即在区域之前。

3-确保OPTIONS方法的AUTH为none。

祝你好运!

答案 2 :(得分:0)

在端点上启用CORS后,我收到相同的错误消息:

{"message":"Missing Authentication Token"}

所有内容都已签出,但我始终收到该错误。要解决我的问题,我必须部署API。为此,请执行以下操作:

  1. 转到“ Amazon API Gateway”控制台
  2. 单击有问题的API网关
  3. 点击“资源”,然后选择根资源,例如“ /”
  4. 点击“操作”,然后点击“部署API”
  5. 选择要部署到的阶段
  6. 点击“部署”

长话短说,在启用CORS后重新部署API。