Відповіді:
Наразі це неможливо, див. Https://forums.aws.amazon.com/thread.jspa?threadID=162252 для обговорення цього питання.
Редагувати: Lambda @ Edge зробила це можливим, див. Нижче.
Оновлення цього ...
Заголовки відповідей HTTP тепер можна налаштувати за допомогою функцій Lambda @ edge. Перегляньте http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/lambda-at-the-edge.html для документації. Щоб спробувати це, створіть нову лямбда-функцію в консолі AWS. Виберіть "Edge Nodge.js 4.3" для мови та шукайте шаблон-заголовок cloudfront-modify-response-header. Якщо ви це зробите, Lambda запитає вас, до якого розповсюдження та події CloudFront застосувати функцію. Зауважте, що ви можете будь-коли відредагувати або змінити це, перейшовши на вкладку поведінки Cloudfront.
Ось приклад функції лямбда ...
'use strict';
exports.handler = (event, context, callback) => {
const response = event.Records[0].cf.response;
response.headers['Strict-Transport-Security'] = 'max-age=2592000; includeSubDomains';
callback(null, response);
};
Щоб додати до відповіді Ендрю:
Я тільки що спробував це і пару зауважень: Існує вже не конкретний час виконання крайових вузлів, але лямбда потрібно створити в регіоні N Вірджинія і викликати реакцію на початок або відповідь глядача .
Код з коробки, схоже, вже не працює. Це дає ERR_CONTENT_DECODING_FAILED.
Рішення полягає у використанні синтаксису json наступним чином:
response.headers['Strict-Transport-Security'] = [ { key: 'Strict-Transport-Security', value: "max-age=31536000; includeSubdomains; preload" } ];
response.headers['X-Content-Type-Options'] = [ { key: 'X-Content-Type-Options', value: "nosniff" } ];
Правильно, оскільки Lambda @ Edge загальнодоступний, вони обмежили його N Вірджинією, і потрібно вибрати Node 6.10, а не Node 4.3.
Відповідна частина нашого коду нижче (для нашої мети це завжди буде постійне переадресація 302):
'use strict';
exports.handler = (event, context, callback) => {
var request = event.Records[0].cf.request;
const response = {
status: '302',
statusDescription: '302 Found',
httpVersion: request.httpVersion,
headers: {
Location: [
{
"key":"Location",
"value":"someURL"
}
],
'Strict-Transport-Security': [
{
"key":"Strict-Transport-Security",
"value":'max-age=63072000; includeSubDomains; preload'
}
],
},
};
callback(null, response);
};
Конфігуруючи різні способи поведінки на CloudFront, ви можете обмежити, які запити будуть викликати функцію Lambda.