Можно ли установить заголовки HSTS в дистрибутиве Amazon CloudFront из источника S3?
источник
Можно ли установить заголовки HSTS в дистрибутиве Amazon CloudFront из источника S3?
В настоящее время это невозможно, см. Обсуждение 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);
};
Чтобы добавить к ответу Андрея:
Я только что попробовал это и пару замечаний: больше нет определенной среды выполнения ребра nodejs, но лямбда должна быть создана в регионе Северная Вирджиния и инициирована ответом источника или ответом зрителя .
Код из коробки, кажется, больше не работает. Это дает ERR_CONTENT_DECODING_FAILED.
Решение состоит в том, чтобы использовать синтаксис JSON следующим образом:
источник
Правильно, поскольку Lambda @ Edge обычно доступен, они ограничивают его N Вирджинией, и нужно выбрать Узел 6.10, а не Узел 4.3.
Соответствующая часть нашего кода ниже (для нашей цели это всегда будет постоянный редирект 302):
Настраивая различные варианты поведения в CloudFront, вы можете ограничить, какие запросы будут вызывать функцию Lambda.
источник