2015-10-15 71 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標題,但在此之前該解決方案可以正常工作,並且可以讓您的安全審覈員感到滿意。