You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用CDK配置API网关响应头Access-Control-Allow-Origin为*的方法

问题说明

使用CDK创建API Gateway端点时,需要在网关响应头中设置Access-Control-Allow-Origin: *以允许所有跨域源,编写如下配置代码执行部署时触发错误:

api.addGatewayResponse('4xx-error-response', {
        type: ResponseType.DEFAULT_4XX ,
        statusCode: '400',
        responseHeaders: {
            'Access-Control-Allow-Origin': `*`
        },
        templates: {
            'application/json': '{ "message": "Access denied", "statusCode": "403", "type": "$context.error.responseType" }'
        }
    });

部署报错信息如下:

Resource handler returned message: "Invalid mapping expression specified: Validation Result: warnings : [], errors : [Invalid mapping expression specified: *]

目标是实现如下参考截图所示的网关响应配置:
API Gateway网关响应跨域配置参考

报错根因

API Gateway的网关响应头字段默认会将传入值解析为映射表达式,直接传入*时,服务端会将其判定为非法的映射语法,触发校验失败。所有静态字符串类型的响应头值,必须用单引号包裹,才会被识别为固定静态值。

修复方案

将Access-Control-Allow-Origin对应的取值修改为'*'(即字符串内容为被单引号包裹的*,CDK中写法为"'*'")即可通过校验,完整正确代码如下:

api.addGatewayResponse('4xx-error-response', {
        type: ResponseType.DEFAULT_4XX ,
        statusCode: '400',
        responseHeaders: {
            'Access-Control-Allow-Origin': `'*'`
        },
        templates: {
            'application/json': '{ "message": "Access denied", "statusCode": "403", "type": "$context.error.responseType" }'
        }
    });

配置其他静态类型的CORS响应头(比如Access-Control-Allow-Headers、Access-Control-Allow-Methods)时也遵循相同规则,只需将固定值放在单引号内传入即可,例如允许的请求方法为GET/POST/OPTIONS时,对应取值写为"'GET,POST,OPTIONS'"。

内容的提问来源于stack exchange,提问作者DrkStr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 06:24:24