Yanıtlar:
Şu anda mümkün değil, bununla ilgili bir tartışma için https://forums.aws.amazon.com/thread.jspa?threadID=162252 adresine bakın .
Düzenleme: Lambda @ Edge bunu mümkün kıldı, aşağıya bakın.
Bu konuda bir güncelleme ...
HTTP yanıt başlıkları artık Lambda @ edge işlevleri ile özelleştirilebilir. Belgeler için lütfen http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/lambda-at-the-edge.html adresine bakın . Bunu denemek için AWS konsolunda yeni bir lambda işlevi oluşturun. Dil için 'Edge Nodge.js 4.3'ü seçin ve cloudfront-change-response-header şablonunu arayın. Bunu yaparsanız, Lambda işlevi hangi CloudFront dağıtımının ve etkinliğinin uygulanacağını soracaktır. Cloudfront davranış sekmesine giderek bunu istediğiniz zaman düzenleyebileceğinizi veya değiştirebileceğinizi unutmayın.
İşte bir lambda işlevi örneği ...
'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);
};
Andrew'un cevabına eklemek için:
Bunu ve birkaç notu denedim: Artık belirli kenar nodejs çalışma zamanı yok, ancak lambda'nın N Virginia bölgesinde oluşturulması ve bulut kökenine yanıt veya görüntüleyici yanıtı tarafından tetiklenmesi gerekiyor .
Kutunun dışında kod artık çalışmıyor gibi görünüyor. ERR_CONTENT_DECODING_FAILED verir.
Çözüm json sözdizimini aşağıdaki gibi kullanmaktır:
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" } ];
Doğru, Lambda @ Edge genel olarak mevcut olduğundan, onu N Virginia ile sınırladılar ve Düğüm 4.3 yerine Düğüm 6.10'u seçmek zorundalar.
Aşağıdaki kodumuzun ilgili kısmı (amacımız için bu her zaman 302 kalıcı bir yönlendirme olacaktır):
'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 üzerinde farklı davranışlar yapılandırarak, hangi isteklerin Lambda işlevini çağıracağını sınırlayabilirsiniz.