2

一旦将资源添加到 AWS API Gateway 上的 API 端点,我目前正在编写脚本以编程方式启用 CORS。在探索了几个小时的 put-integration-response 函数之后。我几乎取得了突破,但我遇到了一个错误:

An error occurred (BadRequestException) when calling the 
PutIntegrationResponse operation: Invalid mapping expression specified: 
Validation Result: warnings : [], errors : [No method response exists 
for method.]

这是我用来启用 CORS 的脚本:

aws apigateway put-integration-response --rest-api-id XXXXX --resource 
-id XXXX --http-method GET --status-code 200 --selection-pattern 200 -- 
response-parameters '{"method.reponse.header.Access-Control-Allow- 
Origin": "'"'*'"'", "method.response.header.Access-Control-Allow- 
Headers": "'"'integration.request.header.Authorization'"'"}'

我发现的奇怪的事情是 AWS 文档似乎与当前版本的版本过时了。aws-cli我花了几个小时来解决我在 api 调用中遇到的一些基本问题。

将不胜感激任何想法。

干杯! 尼亚

4

1 回答 1

0

在您的 AWS CLI 命令中发现的几个问题aws apigateway put-integration-response

  1. 有一个错字

method.reponse.header.Access-Control-Allow-Origin

一定是:

   method.response.header.Access-Control-Allow-Origin
  1. 要设置一个值'*',Access-Control-Allow-Origin你需要使用"'"'"'*'"'"'"而不是"'"'*'"'" 在你可以设置的响应参数中method.reponse.header.Access-Control-Allow-Origin,但不能设置method.response.header.Access-Control-Allow-Headers
  2. 错误的原因

PutIntegrationResponse 操作:指定的映射表达式无效

method.response.header.Access-Control-Allow-Headers是因为你试图设置response-parameters

下面应该是最终的 AWS CLI 命令

aws apigateway put-integration-response --rest-api-id XXXXX --resource-id XXXX --http-method GET --status-code 200 --selection-pattern 200 
--response-parameters '{"method.response.header.Access-Control-Allow-Origin": "'"'"'*'"'"'"}'
于 2019-02-07T01:50:55.013 回答