gpt4 book ai didi

Typescript - AWS CDK 启用 CORS

转载 作者:行者123 更新时间:2023-12-05 03:39:04 25 4
gpt4 key购买 nike

我的 cdk 项目的一部分是一个 Websocket,它获取由 POST 请求触发的 StepFunction 的输出。整个工作流程在 aws 控制台中工作,就像 postman 一样。

但是如果我在前端尝试它,我会收到一个 CORS 错误:

has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

我已经像这样设置了我的 CORS 选项:

const api = new apigw.RestApi(this, `${props.devName}BookingApi`, { 
// set up CORS
defaultCorsPreflightOptions: {
allowHeaders: [
'Content-Type',
'X-Amz-Date',
'Authorization',
'X-Api-Key',
'X-Amz-Security-Token'
],
statusCode: 200,
allowMethods: ['OPTIONS', 'GET', 'POST', 'DELETE'],
allowCredentials: true,
allowOrigins: Cors.ALL_ORIGINS
},
deploy: true
});

如果我在 AWS 控制台中手动启用 CORS,我不会从前端收到 CORS 错误。代码中的 CORS 选项与我手动输入的相同。同样奇怪的是,即使我从前端收到 CORS 错误,WebSocket 也会发布 StepFunction 的输出。

我已阅读 this但该解决方案对我不起作用。

edit1: 添加了错误信息

最佳答案

我找到了解决方案!

这样的设置很好。我在 apigw.AWSIntegration 选项中遗漏了这一部分:

integrationResponses: [
{
responseParameters: {
'method.response.header.Access-Control-Allow-Origin': "'*'",
},
responseTemplates: {
'application/json': JSON.stringify({
message: '$util.parseJson($input.body)',
state: 'ok',
}),
},
statusCode: '200',

还有

methodResponses: [{ 
statusCode: '200',
// important for CORS
responseParameters: {
'method.response.header.Content-Type': true,
'method.response.header.Access-Control-Allow-Origin': true,
'method.response.header.Access-Control-Allow-Credentials': true
}
}]

.addMethod

edit1:这个link帮助我找到了解决方案

edit2:methodResponses 的更新主体:

关于Typescript - AWS CDK 启用 CORS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68739971/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com