Fab*_*Fab 43 amazon-web-services aws-api-gateway
[已解决] AWS(和StackOverflow)新手.我正在尝试在AWS上创建一个lambda服务,并通过API网关从外部访问它,无需身份验证或限制.
为了方便起见,我现在将网关设置为模拟.
在API的Get方法上,Authorization设置为None,API Key为not required.
当我尝试这个时,我得到{"message":"Forbidden"}
(如果我将它连接到实际的lambda服务,则相同的消息).
有关如何使其可访问的任何建议?谢谢
小智 61
如果您将"API Key Required"选项设置为true,请检查以下内容.
小智 48
在API Gateway仪表板上,选择Resources,单击Actions并选择Deploy API.在您第一次部署之前,您将获得的唯一响应是{"message":"Forbidden"}.
kon*_*ten 23
如果您使用自定义域名并忘记选择目标登台,您将收到Forbidden消息.
只需转到Custom Domain Names并Edit在您的域下单击,然后选择下面的阶段Base Path Mappings.
小智 8
我可能为时已晚,但 API 网关会给出“禁止”消息的原因之一是当您在 GET 操作的请求正文中传递数据时。要解决该问题,要么使您的资源 POST,要么不在请求正文中传递数据。
这可能并不明显,但在使用 AWS API Gateway 时看到“禁止”错误的另一个原因可能是调用了与任何部署的 API 方法都不对应的错误 URL。如果您实际上访问了错误的 URL(例如,而不是调用https://9999xx9x99.execute-api.us-east-1.amazonaws.com/dev/users(注意dev阶段之前users)您调用了https://9999xx9x99.execute-api.us-east-1.amazonaws.com/users(没有阶段),则可能会发生这种情况。您希望得到 404,但您会得到 403。
顺便说一句:在您对https://9999xx9x99.execute-api.us-east-1.amazonaws.com/dev/users调用进行部署后https://9999xx9x99.execute-api.us-east-1.amazonaws.com/user(注意这里的单数名词形式),您也会得到... 403,但带有“缺少身份验证令牌”消息!
我有类似的问题,我有以下几点:
我也没有设置任何授权或限制来简化操作.
我能够通过为每个阶段(dev,staging,prod)添加Base Path Mappings来解决问题.
您需要在舞台上部署您的api,并使用舞台URL转到“资源”,单击“操作”,然后选择“部署API”
现在,如果您遇到错误
{“消息”:“禁止”}。
请检查以下步骤
1)如果启用api密钥复制并在邮递员中传递密钥
2)现在您仍然遇到相同的错误,这意味着您需要创建使用计划
3)设置限制并将计划分配给您的api
我经历过但这里没有提到的唯一另一个原因是,您在发布后太快地尝试访问 API。我点击发布并看到“您的 API 可以通过以下方式访问”域名,然后立即将其复制并粘贴到 Postman 中进行检查。
我收到了禁止的消息。什么都不改变。检查所有设置以确保我没有执行任何操作 - 一切都正确。有点扯我的头发。
几分钟后返回尝试,因为我很确定我做的一切都是正确的 - 它有效。
DNS 人。无论互联网有多快 - 它都不是即时的:)
小智 6
就我而言,这是因为我使用了
托管AllViewer
来源请求政策。切换到
托管用户代理RefererHeaders
解决了问题。
我的客户发送了Accept-EncodingCloudFront 不喜欢的标头。您可以通过创建类型为“白名单”的自定义源请求策略来验证这一点,尽管Accept-Encoding可以从列表中选择,但在创建策略时您会收到错误:"The parameter Headers contains Accept-Encoding that is not allowed."
不幸的是我没有找到相关文档。也不知道为什么不允许这样一个不显眼的标题。
如果将必需的“ API”密钥设置为true,则需要将api密钥作为标头传递。
API密钥作为标头字段“ x-api-key”传递。即使在标头中添加此字段后,也可能会出现此问题。在这种情况下,请验证以下几点
| 归档时间: |
|
| 查看次数: |
56224 次 |
| 最近记录: |