gpt4 book ai didi

amazon-cloudfront - 如何在查看者响应的Cloudfront事件中更改状态代码?

转载 作者:行者123 更新时间:2023-12-03 14:56:37 33 4
gpt4 key购买 nike

我想使用S3对象元数据和DB(或某些远程服务)中的某些角色数据(具体针对当前用户)来确保Cloudfront响应的安全。我想我应该在这里使用viewer-response事件,以便一起访问S3数据和用户数据。我尝试在status对象中设置statusDescriptionresponse,但不适用于viewer-response事件,适用于所有其他事件。设置标题仍然有效。

exports.handler = async (event) => {

const response = event.Records[0].cf.response;
const request = event.Records[0].cf.request;
const isUserAllowed = await allowedByTokenAndDb(request);
const isS3ObjectAllowed = response.headers['x-amz-meta-isSecure'][0].value === 'true';

if (!isUserAllowed || !isS3ObjectAllowed) {
response.status = '403'; // does not work
response.statusDescription = 'Nothing';
}

response.headers['X-Powered-By'] = [{ // works, header will be added
key: 'X-Powered-By',
value: 'lol',
}]

return response;
}

有什么方法可以使 viewer-response返回另一个状态? AWS文档没有告诉您是否可能。也许还有另一种解决方案?

最佳答案

根据文档,您似乎只能在viewer-requestorigin-requestorigin-response事件处理程序中更改响应。该页面未明确声明您无法在viewer-response事件处理程序中更改响应,但它确实暗示着,因为它仅谈论了其他三个受支持的内容:https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/lambda-updating-http-responses.html
像您一样,我也无法使其正常工作,但最终我使用了origin-response来满足我的需求。

关于amazon-cloudfront - 如何在查看者响应的Cloudfront事件中更改状态代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53228881/

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