No momento não é possível, consulte o link para uma discussão sobre o assunto.
Editar: Lambda @ Edge tornou isso possível, veja abaixo.
É possível definir cabeçalhos HSTS em uma distribuição do Amazon CloudFront a partir de uma origem S3?
No momento não é possível, consulte o link para uma discussão sobre o assunto.
Editar: Lambda @ Edge tornou isso possível, veja abaixo.
Uma atualização sobre isso ...
Os cabeçalhos de resposta HTTP agora podem ser personalizados por meio das funções de borda do Lambda @. Consulte o link para obter a documentação. Para tentar isso, crie uma nova função lambda no console da AWS. Escolha 'Edge Nodge.js 4.3' para o idioma e procure o modelo cloudfront-modify-response-header. Se você fizer isso, o Lambda perguntará para qual distribuição e evento do CloudFront aplicar a função. Observe que você pode editar ou alterar isso a qualquer momento acessando a guia Comportamento da Cloudfront.
Aqui está um exemplo de função lambda ...
'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);
};
Para adicionar à resposta de Andrew:
Acabei de experimentar isto e algumas notas: Não há mais tempo de execução de nodejs de borda específico, mas o lambda precisa ser criado na região de N Virginia e acionado pelo cloudfront origem-resposta ou visualizador-resposta .
O código fora da caixa parece não funcionar mais. Dá ERR_CONTENT_DECODING_FAILED.
A solução é usar a sintaxe do json da seguinte forma:
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" } ];
Correto, uma vez que o Lambda @ Edge está geralmente disponível, eles o restringiram a N Virginia e um deles tem que escolher o Nó 6.10 ao invés do Nodo 4.3.
A parte relevante do nosso código abaixo (para o nosso propósito, este será sempre um redirecionamento permanente 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);
};
Ao configurar diferentes comportamentos no CloudFront, você pode limitar quais solicitações chamarão a função do Lambda.
Tags ssl amazon-cloudfront hsts