aws-api-gateway - AWS API Gateway:错误指定的映射表达式参数无效:method.response.header.access-control-allow-origin
问题描述
在过去的几年中,我第一次使用 AWS API Gateway 遇到了这个奇怪的阻塞错误,它可能会杀死生产环境:一天之内,我的许多响应(不是全部)都丢失了它们的Access-Control-Allow-Origin
标题。在 Web UI 中,我还看到它们不存在。但它们仍然存在于导出的 Swagger 文件中。不仅如此 - 我无法设置任何值,因为'*'
或者'https://example.com'
我收到错误:
指定的映射表达式无效:验证结果:警告:[],错误:[指定的映射表达式参数无效:method.response.header.access-control-allow-origin]
这是昨天的(我没有改变任何东西来得到这个缺陷),看起来像 AWS 的可怕错误,它阻止了我们的开发(没有 CORS 标头的主要产品不再可用)。现在我害怕将AWS API Gateway用于生产环境......
我尝试Method Response
通过相同的 Web UI 删除标题并再次添加。
这是导出的 Swagger - 与屏幕截图中的相同部分。在这里你可以看到我的method.response.header.Access-Control-Allow-Origin
. 所以在浏览器 UI 和导出的文件是不一样的!
paths:
/lineupmaps:
get:
consumes:
- "application/json"
produces:
- "application/json"
responses:
200:
description: "200 response"
schema:
$ref: "#/definitions/Empty"
headers:
Access-Control-Allow-Origin:
type: "string"
security:
- cognito: []
x-amazon-apigateway-integration:
uri: "arn:aws:apigateway:us-east-1:lambda:path/2015-03-31/functions/arn:aws:lambda:us-east-1:988646599334:function:getLineUpMap/invocations"
responses:
default:
statusCode: "200"
responseParameters:
method.response.header.access-control-allow-origin: "'https://happy-marketer.gms-ai.com'"
responseTemplates:
application/json: "$input.body"
passthroughBehavior: "when_no_match"
httpMethod: "POST"
requestTemplates:
application/json: "{\n \"specs\": $input.params('specs'),\n \"competitors\"\
: $input.params('competitors'),\n \"numberOfModels\": $input.params('numberOfModels')\n\
}"
contentHandling: "CONVERT_TO_TEXT"
type: "aws"
options:
consumes:
- "application/json"
produces:
- "application/json"
responses:
200:
description: "200 response"
schema:
$ref: "#/definitions/Empty"
headers:
Access-Control-Allow-Origin:
type: "string"
Access-Control-Max-Age:
type: "string"
Access-Control-Allow-Headers:
type: "string"
x-amazon-apigateway-integration:
responses:
default:
statusCode: "200"
responseParameters:
method.response.header.Access-Control-Max-Age: "'86400'"
method.response.header.Access-Control-Allow-Headers: "'Authorization'"
method.response.header.Access-Control-Allow-Origin: "'https://happy-marketer.gms-ai.com'"
passthroughBehavior: "when_no_match"
requestTemplates:
application/json: "{\"statusCode\": 200}"
type: "mock"
解决方案
谢谢你nachary:帮助导入我的 Swagger 并method.response.header.access-control-allow-origin
在一个端点的 GET 中删除...
推荐阅读
- javascript - D3 堆积面积图,x 轴作为月份名称,还带有图例
- node.js - 命令失败:运行 'npm install @tensorflow/tfjs-node-gpu' 时 node-pre-gyp install --fallback-to-build 错误
- javascript - React-Bootstrap 中的两个导航栏行
- algorithm - 算法 - 如何找到最高的人塔的高度
- angular - 如何为Angular中的自定义多选组件添加可选的换行和分页?
- javascript - 如何为Angular中数组中的每个项目使用contenteditable
- react-native - React Native)如何使用 React Native Expo 显示网站?
- php - 单击按钮时如何更改表单元素中的操作属性?
- python - 我在 python 中的猜谜游戏中遇到错误
- c# - 启动 ForEach 内的任务调试 NullReferenceException