我尝试使用aws cli设置一些自定义API网关响应。这是我使用的命令(只有相关参数):
aws apigateway put-gateway-response --response-parameters method.response.header.Access-Control-Allow-Origin='"'"'*'"'"'
完整的命令是:
aws apigateway put-gateway-response --rest-api-id w1s3nc4dxd --response-type UNAUTHORIZED --status-code 401 --response-parameters method.response.header.Access-Control-Allow-Origin =& #39;"'"' *'"'"' --response-templates' {" application / json":" {\" errorcode \":401,\" message \&#34 ;:$ context.error.messageString}" }' --region eu-west-1
它失败了:
调用PutGatewayResponse操作时发生错误(BadRequestException):指定了无效的映射表达式:验证结果:警告:[],错误:[指定的映射表达式无效:method.response.header.Access-Control-Allow-Origin]
如果没有该参数执行它,一切正常。我也尝试过json格式和相同的结果。
--response-parameters '{"method.response.header.Access-Control-Allow-Origin":"'"'*'"'"}'
有什么见解?提前谢谢。
---编辑
只是为了进一步澄清。这失败了所有类型的响应参数,这不仅涉及Access-Control-Allow-Origin标头。
答案 0 :(得分:0)
我认为网关响应参数的格式应为gatewayresponse.header.[name]
。那将是地图键(目标),值(源)是静态值(就像你有的)或映射表达式到method.request.(path|querystring|header).[name]
或stageVariables.[name]
或context.[name]
答案 1 :(得分:0)
尝试使用
--response-parameters '{"gatewayresponse.header.Access-Control-Allow-Origin":"'"'*'"'"}'
,它对我有用