阅读文档:https://docs.aws.amazon.com/cdk/api/v1/docs/aws-apigateway-readme.html
我不清楚在端点上指定CORS意味着它只适用于该级别,还是所有子资源?
初版,
假设我在资源路径-/products和
添加一个方法declare const productsResource: apigateway.Resource;
productsResource.addCorsPreflight({
allowOrigins: [ 'https://amazon.com' ],
allowMethods: [ 'GET', 'PUT' ]
Does that apply to /products/{productdId} as well?
});
或者我是否需要为该子资源单独调用addCorsPreflight() ?
这取决于子资源是如何定义的。
如果它是一个实际的资源,我相信答案是肯定的-您确实需要为所有其他定义的资源定义它。对于不是代理的任何给定资源执行此操作
然而,如果它是一个代理端点(作为我期望的产品ID)链接到一个lambda,它必须处理Cors Preflight响应本身。
你必须,例如,(不是工作代码,你需要定义如何知道这是否是一个预飞行或不是基于从Api网关触发lambda的传入事件)
exports.handler = async (event) => {
const response = {
statusCode: 200,
headers: {
"Access-Control-Allow-Headers" : "Content-Type",
"Access-Control-Allow-Origin": "https://www.example.com",
"Access-Control-Allow-Methods": "OPTIONS,POST,GET"
},
body: JSON.stringify('Hello from Lambda!'),
};
if preflight:
return response;
};
在这里找到更多信息:https://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-cors.html