gpt4 book ai didi

amazon-s3 - 在 AWS CloudFront 和 S3 上配置 X-Frame-Options 响应 header

转载 作者:行者123 更新时间:2023-12-04 15:42:27 27 4
gpt4 key购买 nike

我想添加 X-Frame-Options托管在带有 Cloudfront 缓存的 Amazon S3 上的静态内容的 HTTP 响应 header 。如何添加这些标题?

最佳答案

您可以使用 Lambda@Edge 将 x-frame-options header 添加到来自 CloudFront/S3 的响应中功能。 lambda 代码在本地边缘位置内运行,但需要在 us-east-1 中创建和维护地区。

这里的示例代码使用 nodeJS 6.10 添加响应头

'use strict'; 
exports.handler = (event, context, callback) => {
const response = event.Records[0].cf.response;
const headers = response.headers;
response.headers['x-frame-options'] = [{"key":"X-Frame-Options","value":"SAMEORIGIN"}];
console.log(response.headers);
callback(null, response);
};

创建 Lambda 的最终版本,然后将 Lambda 版本的触发器配置设置为 CloudFront origin-response路径模式行为的事件类型。

示例代码将事件记录到 CloudWatch 日志服务以进行调试。如果您还没有,则需要设置一个 lambda 执行 IAM 角色,该角色允许策略允许 edgelambda.amazonaws.com 承担 CloudWatch 日志操作。和 lambda.amazonaws.com .

允许将日志写入 CloudWatch 的基本 Lambda 执行策略:
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": "arn:aws:logs:*:*:*",
"Effect": "Allow"
}
]
}

允许 Lambda 和 Lambda@Edge 承担角色的信任关系:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": [
"edgelambda.amazonaws.com",
"lambda.amazonaws.com"
]
},
"Action": "sts:AssumeRole"
}
]
}

如果 AWS 只是允许在 GUI 中设置 x-frame-options header ,那会更好,但在此之前,此解决方案会起作用,并使您的安全审核员满意。

关于amazon-s3 - 在 AWS CloudFront 和 S3 上配置 X-Frame-Options 响应 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33144580/

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