amazon-web-services - 如何在 AWS Gateway 上为特定内容类型的所有请求实施 JSON Schema 模型?
问题描述
我已成功设置 AWS Gateway 以使用 JSON Schema 验证传入 POST 请求的正文。我太激动了!万岁,我想......当我使用内部 AWS 工具测试功能时......但随后我使用 AJAX 测试了来自网站的带有无效数据的 POST 请求,然后是 CURL 请求,再次使用无效数据 - 并且不会你知道的,他们两个都通过了我的集成并触发了我的 AWS Lambda 函数,这是 JSON Schema 应该阻止的!我已将最新的 API 部署到我的端点,甚至将所有被调用的“Content-Type”标头设置为相同的 JSON Schema AWS 模型。我不知道发生了什么……我如何强制所有请求必须是一种内容类型或返回错误?
提前感谢您提供的任何帮助...
解决方案
对于那些偶然发现这个问题的人,我的问题的答案。
默认情况下,JQuery 的“.post”方法将 Content-Type 设置为“application/x-www-form-urlencoded”。我在 AWS Gateway 中设置的模型仅适用于“application/json”POST 请求。我假设如果我将“请求验证器”设置为对特定内容类型使用 JSON 模式模型,那么只有我定义的内容类型才允许通过......哦,不,不,不!AWS Gateway 可以方便地让任何其他 Content-Type 未经检查地通过,绕过我的 JSON Schema 模型验证器。其实难以置信。因此,仅强制执行 application/json 的答案是然后移动到“集成请求”并为 application/json 配置主体映射,将“当没有定义模板时(推荐)”选项设置为 true。瞧,问题解决了。
我想补充一下……这不再是问题,但即使通过设置多个 Content-Type 模式,该模型也仅在 AWS Gateway 中的第一个模式上实施。奇怪的行为......也许有人可以帮忙吗?
推荐阅读
- laravel - 是否可以更改/修改 Laravel Passport 中的预定义路线?
- javafx - Javafx 与 Java 小程序
- python - 更改由 sklearn.model_selection.train_test_split 产生的数组中的值类型
- xml - Remove duplicates considering all element values
- java - Java-EE 创建的 WebDrivers 过期
- html - 具有多个元素的 CSS 浮动 2 列布局
- python - 如何打印keras Multi输出的混淆矩阵?
- excel - 在 VBA 中是否可以在 ThisworkBook 中获取 Friend 属性?
- git - 无法推送到 Azure DevOps git repo - 它没有要求用户名
- postgresql - 下载 PostgreSQL 10.4