0

我不确定这里的确切问题是什么,但如果有人可以在这里给我一些建议,那将非常有帮助?

我有一个发布方法 AWS rest API ok,并且我已将它与 AWS API 资源策略集成,该策略允许除某些特定 IP 地址之外的所有 IP 地址访问此 API,以下是我正在使用的资源策略。

当我使用 POSTMAN 或在任何 IDE 上运行的一些 Python 脚本测试它时,整个设置工作得非常好,但是当我将此 POST API 与我的前端(HTML + JAVASCRIPT)集成时,它给了我 403:访问被拒绝错误

以下是 API 对浏览器的响应:

content-length: 159
content-type: application/json
date: Sun, 13 Jun 2021 07:25:50 GMT
x-amz-apigw-id: A2jnxEQihcwFWaA=
x-amzn-errortype: AccessDeniedException
x-amzn-requestid: 8ca8eaa8-453e-44dd-a94a-ed5754aabf5f

使用的资源策略:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "execute-api:Invoke",
            "Resource": "arn:aws:execute-api:ap-south-1:xxxxxxxxxxx:yyyyyyy/*/POST/",
            "Condition": {
            "NotIpAddress": {
              "aws:SourceIp": ["192.191.12.44/32"]
            }
          }
        }
    ]
}
4

1 回答 1

0

下面的任何人都是上述失败的原因,我能够识别它。我错过了包含在资源策略中的OPTIONS方法,下面是应该使用的更新策略。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "execute-api:Invoke",
            "Resource": ["arn:aws:execute-api:ap-south-1:xxxxxxxxxxx:yyyyyyy/*/POST/","arn:aws:execute-api:ap-south-1:xxxxxxxxxxx:yyyyyyy/*/OPTIONS/"],
            "Condition": {
            "NotIpAddress": {
              "aws:SourceIp": ["192.191.12.44/32"]
            }
          }
        }
    ]
}
于 2021-06-13T12:02:54.463 回答