API 网关 CORS 设置



我正在尝试在部署脚本中使用 aws-cli 从命令行设置 aws CORS。我已经使用以下perl到shell命令创建了POST资源。我正在尝试将集成响应设置为"*",就像启用内核一样。

aws apigateway put-method-response \ --region "$region" \ --rest-api-id "$api_id" \ --resource-id "$resource_id" \ --http-method "POST" \ --status-code 200 \ --response-models '{"application/json":"Empty"}' \ --response-parameters '{"method.response.header.Access-Control-Allow-Origin":true}'

当我运行以下命令来设置集成值时。

aws apigateway put-integration-response \ --region "$region" \ --rest-api-id "$api_id" \ --resource-id "$resource_id" \ --http-method "$method" \ --status-code 200 \ --response-template '{"application/json":"Empty"}' \ --response-parameters \ '{"method.response.header.Access-Control-Allow-Origin": "'*'"}'

我收到以下错误。

调用 PutIntegrationResponse 操作时发生客户端错误 (BadRequestException):指定的映射表达式无效:验证结果:警告:[],错误:[指定的映射表达式无效:*]

谁能告诉我这个错误真正指的是什么,甚至是处理 api 网关部署脚本的更好方法。

这个问题最终确实是逃避字符的正确方法。

--response-parameters '{"method.response.header.Access-Control-Allow-Origin":"'"'*'"'"}'

显然,这更多的是关于了解格式化 JSON 的正确方法。

API 网关管理控制台有一个很好的"启用 CORS"功能,您可能已经看到过。至于使用 CLI 进行复制,我建议使用控制台功能,事后观察配置,并在 CLI 请求中使用相同的参数。

您看到的错误一定是由值"*"的单引号转义不正确引起的,因为只有字符 * 无效。另外,为了指出另一个潜在的问题,--response-templates '{"application/json":"Empty"}' 的输入是有效的,但解释与方法-响应对象中的 --response-models 不同。该值会将使用该集成响应的所有 API 调用的响应正文设置为"空"。要执行直通,只是不要设置 --response-templates 的值

相关内容

  • 没有找到相关文章

最新更新