wae*_*ael 6 amazon-s3 x-frame-options amazon-cloudfront
我试图为由云端服务的亚马逊s3中托管的角度js应用程序设置X-Frame-Options HTTP响应头,我有可能做到吗?
sho*_*ser 11
您可以使用Lambda@Edge函数将 x-frame-options 标头添加到来自 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);
};
Run Code Online (Sandbox Code Playgroud)
创建 Lambda 的最终版本,然后将 Lambda 版本的触发器配置设置origin-response为路径模式行为的 CloudFront事件类型。
示例代码将事件记录到 CloudWatch 日志服务以进行调试。如果您还没有,则需要设置一个 lambda 执行 IAM 角色,该角色允许策略允许 CloudWatch 日志操作由edgelambda.amazonaws.com和承担lambda.amazonaws.com。
允许将日志写入 CloudWatch 的基本 Lambda 执行策略:
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": "arn:aws:logs:*:*:*",
"Effect": "Allow"
}
]
}
Run Code Online (Sandbox Code Playgroud)
允许 Lambda 和 Lambda@Edge 承担角色的信任关系:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": [
"edgelambda.amazonaws.com",
"lambda.amazonaws.com"
]
},
"Action": "sts:AssumeRole"
}
]
}
Run Code Online (Sandbox Code Playgroud)
如果 AWS 只是允许在 GUI 中设置 x-frame-options 标头,那会更好,但在此之前,此解决方案有效,并且可以让您的安全审核员满意。
Mo *_*nni -3
是的,您可以在 $http 角度服务中设置标头,如下所示:
$http(method: '<TYPE>', headers: headers, url: <URL>, data: {}).success(...);
var headers = {'X-Frame-Options': ...};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6150 次 |
| 最近记录: |