在不使用S3存储桶的情况下,您可以通过使用Lambda@Edge函数来设置AWS CloudFront的CORS头部。下面是一个使用Node.js编写的Lambda函数示例:
exports.handler = async (event) => {
const response = event.Records[0].cf.response;
// 添加CORS头部
response.headers['access-control-allow-origin'] = [{ key: 'Access-Control-Allow-Origin', value: '*' }];
response.headers['access-control-allow-methods'] = [{ key: 'Access-Control-Allow-Methods', value: 'GET, HEAD, OPTIONS' }];
response.headers['access-control-allow-headers'] = [{ key: 'Access-Control-Allow-Headers', value: 'Origin, X-Requested-With, Content-Type, Accept' }];
return response;
};
上述代码将在Lambda@Edge函数中拦截CloudFront的响应,并添加CORS头部。其中,Access-Control-Allow-Origin
头部设置为'*'表示允许来自任何源的请求。Access-Control-Allow-Methods
头部指定允许的HTTP方法,这里设置为GET、HEAD和OPTIONS。Access-Control-Allow-Headers
头部定义允许的请求头。
您可以将上述代码保存为一个Lambda函数,然后在AWS控制台中创建一个Lambda函数并将其与CloudFront分发关联。这样,当有请求通过CloudFront时,Lambda函数将拦截并修改响应,添加CORS头部。