2015-10-15 123 views

回答

0

是的,你可以设置在$ HTTP角服务的头,像这样:

$http(method: '<TYPE>', headers: headers, url: <URL>, data: {}).success(...); 
var headers = {'X-Frame-Options': ...}; 
+0

感谢您的回复Mo Binni,但我需要的是将其设置在服务器端,所以当页面加载浏览器时不应该被允许渲染它在一个框架或iframe – wael

+0

有关这个https://论坛。 aws.amazon.com/thread.jspa?messageID=660139򡊫 – wael

+0

Oooh你在运行什么样的服务器? –

0

您可以使用[email protected]函数添加X框,选择标题,以从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); 
}; 

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

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

基本LAMBDA执行政策,允许日志写入的CloudWatch:

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
     { 
      "Action": [ 
       "logs:CreateLogGroup", 
       "logs:CreateLogStream", 
       "logs:PutLogEvents" 
      ], 
      "Resource": "arn:aws:logs:*:*:*", 
      "Effect": "Allow" 
     } 
    ] 
} 

信任关系允许Lambda和LAMBDA @缘来承担该角色:

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
    { 
     "Effect": "Allow", 
     "Principal": { 
     "Service": [ 
      "edgelambda.amazonaws.com", 
      "lambda.amazonaws.com" 
     ] 
     }, 
     "Action": "sts:AssumeRole" 
    } 
    ] 
} 

这将是,如果AWS简单越好允许在GUI中设置x-frame-option标题,但在此之前该解决方案可以正常工作,并且可以让您的安全审核员感到满意。