cdk http api cors 配置不工作
cdk http api cors configuration not working
我有创建 http api 的代码,但 cors 配置无法正常工作,即使它在部署后正确显示在控制台中也是如此。我仍然可以从邮递员发送请求并执行 api 后面的 lambda,考虑到这个 cors 配置,这不应该发生。
const someApiDomain = new apigateway.DomainName(this, 'mydomain', {
domainName: 'api.example.com',
endpointType: apigateway.EndpointType.REGIONAL,
certificate: someCert
})
const httpApi = new apigateway.HttpApi(this, 'my-api', {
apiName: `my-api`,
createDefaultStage: true,
disableExecuteApiEndpoint: true,
defaultDomainMapping: {
domainName: someApiDomain
},
corsPreflight: {
allowHeaders: [
'Content-Type',
'X-Amz-Date'
],
allowMethods: [
apigateway.CorsHttpMethod.OPTIONS,
apigateway.CorsHttpMethod.POST,
],
allowCredentials: false,
allowOrigins: ['https://example.com']
},
});
httpApi.addRoutes({
methods: [apigateway.HttpMethod.POST],
path: '/myapi',
integration: new apigatewayintegrations.LambdaProxyIntegration({
handler: myFunction,
}),
});
new route53.ARecord(this, 'myapirecord', {
zone: someHostedZone,
recordName: 'api.example.com',
target: route53.RecordTarget.fromAlias(
new route53targets.ApiGatewayv2DomainProperties(someApiDomain.regionalDomainName, someApiDomain.regionalHostedZoneId)
),
});
route53 记录绕过了这里吗?
这是预期的行为。 CORS 检查总是由浏览器执行,但像 Postman 和 curl 这样的工具 .
CDK 的 ApiGatewayV2 HttpApi
构造支持 access control. The ApiGateway RestApi
has broader auth capabilities,包括 API 个密钥。
我有创建 http api 的代码,但 cors 配置无法正常工作,即使它在部署后正确显示在控制台中也是如此。我仍然可以从邮递员发送请求并执行 api 后面的 lambda,考虑到这个 cors 配置,这不应该发生。
const someApiDomain = new apigateway.DomainName(this, 'mydomain', {
domainName: 'api.example.com',
endpointType: apigateway.EndpointType.REGIONAL,
certificate: someCert
})
const httpApi = new apigateway.HttpApi(this, 'my-api', {
apiName: `my-api`,
createDefaultStage: true,
disableExecuteApiEndpoint: true,
defaultDomainMapping: {
domainName: someApiDomain
},
corsPreflight: {
allowHeaders: [
'Content-Type',
'X-Amz-Date'
],
allowMethods: [
apigateway.CorsHttpMethod.OPTIONS,
apigateway.CorsHttpMethod.POST,
],
allowCredentials: false,
allowOrigins: ['https://example.com']
},
});
httpApi.addRoutes({
methods: [apigateway.HttpMethod.POST],
path: '/myapi',
integration: new apigatewayintegrations.LambdaProxyIntegration({
handler: myFunction,
}),
});
new route53.ARecord(this, 'myapirecord', {
zone: someHostedZone,
recordName: 'api.example.com',
target: route53.RecordTarget.fromAlias(
new route53targets.ApiGatewayv2DomainProperties(someApiDomain.regionalDomainName, someApiDomain.regionalHostedZoneId)
),
});
route53 记录绕过了这里吗?
这是预期的行为。 CORS 检查总是由浏览器执行,但像 Postman 和 curl 这样的工具
CDK 的 ApiGatewayV2 HttpApi
构造支持 access control. The ApiGateway RestApi
has broader auth capabilities,包括 API 个密钥。