Noções básicas das políticas de cabeçalhos de resposta
Você pode usar uma política de cabeçalhos de resposta para especificar os cabeçalhos HTTP que o Amazon CloudFront remove ou adiciona às respostas enviadas aos visualizadores. Para obter mais informações sobre políticas de cabeçalhos de respostas e os motivos para usá-las, consulte Adicionar ou remover cabeçalhos HTTP em respostas do CloudFront com uma política.
Os tópicos a seguir explicam as configurações em uma política de cabeçalhos de resposta. As configurações são agrupadas em categorias, que são representadas nos tópicos a seguir.
Tópicos
Detalhes da política (metadados)
As configurações de detalhes da política contêm metadados sobre uma política de cabeçalhos de resposta.
-
Name (Nome): um nome para identificar a política dos cabeçalhos de resposta. No console, você usa o nome para anexar a política a um comportamento de cache.
-
Description (Descrição, opcional): um comentário para descrever a política dos cabeçalhos de resposta. Isso é opcional, mas pode ajudar a identificar a finalidade da política.
Cabeçalhos de CORS
As configurações de compartilhamento de recursos entre origens (CORS) permitem adicionar e configurar cabeçalhos de CORS em uma política de cabeçalhos de resposta.
Essa lista se concentra em como especificar as configurações e os valores válidos em uma política de cabeçalhos de resposta. Para obter mais informações sobre cada um desses cabeçalhos e como eles são usados para solicitações e respostas de CORS do mundo real, consulte compartilhamento de recursos entre origens
- Access-Control-Allow-Credentials
-
Essa é uma configuração booleana (
true
oufalse
) que determina se o CloudFront adiciona o cabeçalhoAccess-Control-Allow-Credentials
em respostas às solicitações de CORS. Quando essa configuração for definida comotrue
, o CloudFront adicionará o cabeçalhoAccess-Control-Allow-Credentials: true
em respostas às solicitações do CORS. Caso contrário, o CloudFront não adicionará esse cabeçalho às respostas. - Access-Control-Allow-Headers
-
Especifica os nomes de cabeçalho que o CloudFront usa como valores para o cabeçalho
Access-Control-Allow-Headers
em respostas às solicitações de comprovação de CORS. Os valores válidos para essa configuração incluem nomes de cabeçalho HTTP ou o caractere curinga (*
), que indica que todos os cabeçalhos são permitidos.nota
O cabeçalho
Authorization
não pode usar um caractere curinga e deve ser listado explicitamente.Exemplos de uso válido do caractere curinga Exemplo Corresponderá Não corresponderá x-amz-*
x-amz-test
x-amz-
x-amz
x-*-amz
x-test-amz
x--amz
*
Todos os cabeçalhos, exceto Authorization
.Authorization
- Access-Control-Allow-Methods
-
Especifica os métodos HTTP que o CloudFront usa como valores para o cabeçalho
Access-Control-Allow-Methods
em respostas às solicitações de comprovação de CORS. Os valores válidos sãoGET
,DELETE
,HEAD
,OPTIONS
,PATCH
,POST
,PUT
eALL
.ALL
é um valor especial que inclui todos os métodos de HTTP listados. - Access-Control-Allow-Origin
-
Especifica os valores que o CloudFront pode usar no cabeçalho de resposta
Access-Control-Allow-Origin
. Os valores válidos para essa configuração incluem uma origem específica (comohttp://www.example.com
) ou o caractere curinga (*
), o que indica que todas as origens são permitidas.Observações
-
O caractere curinga (
*
) é permitido como a parte mais à esquerda do subdomínio (*.example.org
). -
O caractere curinga (
*
) não é permitido nas seguintes posições:-
Domínios de nível superior (
example.*
) -
À direita dos subdomínios (
test.*.example.org
) ou dentro de qualquer subdomínio (*test.example.org
) -
Dentro dos termos (
exa*mple.org)
-
Para ver exemplos de como usar o caractere curinga, consulte a tabela a seguir.
Exemplo Corresponderá Não corresponderá http://*.example.org
http://www.example.org
http://test.example.org
http://test.example.org:123
https://test.example.org
https://test.example.org:123
*.example.org
test.example.org
test.test.example.org
.example.org
http://test.example.org
https://test.example.org
http://test.example.org:123
https://test.example.org:123
example.org
http://example.org
https://example.org
http://example.org
https://example.org
http://example.org:123
http://example.org:*
http://example.org:123
http://example.org
http://example.org:1*3
http://example.org:123
http://example.org:1893
http://example.org:13
*.example.org:1*
test.example.org:123
-
- Access-Control-Expose-Headers
-
Especifica os nomes de cabeçalho que o CloudFront usa como valores para o cabeçalho
Access-Control-Expose-Headers
em respostas às solicitações de CORS. Os valores válidos para essa configuração incluem nomes de cabeçalho de HTTP ou o caractere curinga (*
). - Access-Control-Max-Age
-
Um número de segundos, que o CloudFront usa como valor para o cabeçalho
Access-Control-Max-Age
em respostas às solicitações de comprovação de CORS. - Substituição de origem
-
Uma configuração booliana que determina como o CloudFront se comporta quando a resposta da origem contém um dos cabeçalhos de CORS que também está na política.
-
Quando definida como
true
e a resposta da origem contiver um cabeçalho de CORS que também esteja na política, o CloudFront adicionará o cabeçalho de CORS da política à resposta. Depois, o CloudFront envia essa resposta ao visualizador. O CloudFront ignora o cabeçalho que recebeu da origem. -
Quando definido como
false
e a resposta de origem contém um cabeçalho de CORS (independentemente de esse cabeçalho estar na política), o CloudFront inclui na resposta o cabeçalho de CORS que recebeu da origem. O CloudFront não adicionará cabeçalhos de CORS da política à resposta que é enviada ao visualizador.
-
Cabeçalhos de segurança
Você pode usar as configurações de cabeçalhos de segurança para adicionar e configurar vários cabeçalhos de resposta de HTTP relacionados à segurança em uma política de cabeçalhos de resposta.
Essa lista descreve como você pode especificar as configurações e valores válidos em uma política de cabeçalhos de resposta. Para obter mais informações sobre cada um desses cabeçalhos e como eles são usados em respostas de HTTP do mundo real, consulte os links para o MDN Web Docs.
- Content-Security-Policy
-
Especifica as diretivas de política de segurança de conteúdo que o CloudFront usa como valores para o cabeçalho de resposta
Content-Security-Policy
.Para obter mais informações sobre esse cabeçalho e diretivas de políticas válidas, consulteContent-Security-Policy
no MDN Web Docs. nota
O valor do cabeçalho
Content-Security-Policy
é limitado a 1783 caracteres. - Política de referenciador
-
Especifica a diretiva de política do referenciador que o CloudFront usa como valor para o cabeçalho de resposta
Referrer-Policy
. Os valores válidos para essa configuração sãono-referrer
,no-referrer-when-downgrade
,origin
,origin-when-cross-origin
,same-origin
,strict-origin
,strict-origin-when-cross-origin
eunsafe-url
.Para obter mais informações sobre esse cabeçalho e essas diretivas, consulte Referrer-Policy
no MDN Web Docs. - Strict-Transport-Security
-
Especifica as diretivas e as configurações que o CloudFront usa como valor para o cabeçalho de resposta
Strict-Transport-Security
. Para essa configuração, você especifica separadamente:-
Um número de segundos, que o CloudFront usa como valor para a diretiva
max-age
desse cabeçalho -
Uma configuração booliana (
true
oufalse
) parapreload
, que determina se o CloudFront inclui a diretivapreload
no valor desse cabeçalho -
Uma configuração booliana (
true
oufalse
) paraincludeSubDomains
, que determina se o CloudFront inclui a diretivaincludeSubDomains
no valor desse cabeçalho
Para obter mais informações sobre esse cabeçalho e essas diretivas, consulte Strict-Transport-Security
no MDN Web Docs. -
- X-Content-Type-Options
-
Essa é uma configuração booliana (
true
oufalse
) que determina se o CloudFront adiciona o cabeçalhoX-Content-Type-Options
às respostas. Quando essa configuração fortrue
, o CloudFront adicionará o cabeçalhoX-Content-Type-Options: nosniff
às respostas. Caso contrário, o CloudFront não adicionará esse cabeçalho.Para obter mais informações sobre esse cabeçalho, consulte X-Content-Type-Options
no MDN Web Docs. - X-Frame-Options
-
Especifica a diretiva que o CloudFront usa como valor para o cabeçalho de resposta
X-Frame-Options
. Os valores válidos para essa configuração sãoDENY
ouSAMEORIGIN
.Para obter mais informações sobre esse cabeçalho e essas diretivas, consulte X-Frame-Options
no MDN Web Docs. - X-XSS-Protection
-
Especifica as diretivas e as configurações que o CloudFront usa como valor para o cabeçalho de resposta
X-XSS-Protection
. Para essa configuração, você especifica separadamente:-
Uma configuração
X-XSS-Protection
de0
(desabilita a filtragem de XSS) ou1
(habilita a filtragem de XSS) -
Uma configuração booliana (
true
oufalse
) parablock
, que determina se o CloudFront inclui a diretivamode=block
no valor desse cabeçalho -
Um URI de relatório, que determina se o CloudFront deve incluir a diretiva
report=
no valor desse cabeçalhoreporting URI
Você pode especificar
true
parablock
, ou pode especificar um URI de relatório, mas não pode especificar os dois juntos. Para obter mais informações sobre esse cabeçalho e essas diretivas, consulte X-XSS-Protectionno MDN Web Docs. -
- Substituição de origem
-
Cada uma dessas configurações de cabeçalhos de segurança contém uma configuração booleana (
true
oufalse
) que determina como o CloudFront se comporta quando a resposta da origem contém esse cabeçalho.Quando essa configuração for definida como
true
e a resposta da origem contiver o cabeçalho, o CloudFront adicionará o cabeçalho na política à resposta que envia ao visualizador. Ele ignora o cabeçalho que recebeu da origem.Quando essa configuração for definida como
false
e a resposta da origem contiver o cabeçalho, o CloudFront incluirá o cabeçalho recebido da origem na resposta que envia ao visualizador.Quando a resposta da origem não contiver o cabeçalho, o CloudFront adicionará o cabeçalho da política à resposta que envia ao visualizador. O CloudFront faz isso quando essa configuração está definida como
true
oufalse
.
Cabeçalhos personalizados
Você pode usar as configurações de cabeçalhos personalizados para adicionar e configurar cabeçalhos de HTTP personalizados em uma política de cabeçalhos de resposta. O CloudFront adiciona esses cabeçalhos a cada resposta que ele retorna aos espectadores. Para cada cabeçalho personalizado, você também especifica o valor do cabeçalho, embora a especificação de um valor seja opcional. Isso ocorre porque o CloudFront pode adicionar um cabeçalho de resposta sem valor.
Cada cabeçalho personalizado também tem sua própria configuração de substituição de origem:
-
Quando essa configuração for definida como
true
e a resposta da origem contiver o cabeçalho personalizado que está na política, o CloudFront adicionará o cabeçalho personalizado da política à resposta que envia ao visualizador. Ele ignora o cabeçalho que recebeu da origem. -
Quando essa configuração for
false
e a resposta da origem contiver o cabeçalho personalizado que está na política, o CloudFront incluirá o cabeçalho personalizado recebido da origem na resposta que envia ao visualizador. -
Quando a resposta da origem não contiver o cabeçalho personalizado que está na política, o CloudFront adicionará o cabeçalho personalizado na política à resposta que envia ao visualizador. O CloudFront faz isso quando essa configuração está definida como
true
oufalse
.
Remover cabeçalhos
Você pode especificar cabeçalhos que deseja que o CloudFront remova das respostas que recebe da origem para que os cabeçalhos não sejam incluídos nas respostas que o CloudFront envia aos visualizadores. O CloudFront remove os cabeçalhos de cada resposta que envia aos visualizadores, independentemente de os objetos serem fornecidos do cache do CloudFront ou da origem. Por exemplo, você pode remover cabeçalhos que não são úteis para navegadores, como X-Powered-By
ou Vary
, para que o CloudFront remova esses cabeçalhos das respostas que envia aos visualizadores.
Quando você especifica cabeçalhos a serem removidos usando uma política de cabeçalhos de resposta, primeiro o CloudFront remove os cabeçalhos, depois adiciona os cabeçalhos especificados em outras seções da política de cabeçalhos de resposta (cabeçalhos de CORS, cabeçalhos de segurança, cabeçalhos personalizados etc.). Se você especificar um cabeçalho para remover, mas também adicionar o mesmo cabeçalho em outra seção da política, o CloudFront incluirá o cabeçalho nas respostas que ele envia aos visualizadores.
nota
Você pode usar uma política de cabeçalhos de resposta para remover os cabeçalhos Server
e Date
que o CloudFront recebeu da origem, para que esses cabeçalhos (conforme recebidos da origem) não sejam incluídos nas respostas que o CloudFront envia aos visualizadores. No entanto, se você fizer isso, o CloudFront adicionará sua própria versão desses cabeçalhos às respostas enviadas aos visualizadores. Para o cabeçalho Server
que o CloudFront adiciona, o valor é CloudFront
.
Cabeçalhos que não podem ser removidos
Você não pode remover os cabeçalhos a seguir usando uma política de cabeçalhos de resposta. Se você especificar esses cabeçalhos na seção Remove headers (Remover cabeçalhos) de uma política de cabeçalhos de resposta (ResponseHeadersPolicyRemoveHeadersConfig
na API), receberá um erro.
-
Connection
-
Content-Encoding
-
Content-Length
-
Expect
-
Host
-
Keep-Alive
-
Proxy-Authenticate
-
Proxy-Authorization
-
Proxy-Connection
-
Trailer
-
Transfer-Encoding
-
Upgrade
-
Via
-
Warning
-
X-Accel-Buffering
-
X-Accel-Charset
-
X-Accel-Limit-Rate
-
X-Accel-Redirect
-
X-Amz-Cf-.*
-
X-Amzn-Auth
-
X-Amzn-Cf-Billing
-
X-Amzn-Cf-Id
-
X-Amzn-Cf-Xff
-
X-Amzn-ErrorType
-
X-Amzn-Fle-Profile
-
X-Amzn-Header-Count
-
X-Amzn-Header-Order
-
X-Amzn-Lambda-Integration-Tag
-
X-Amzn-RequestId
-
X-Cache
-
X-Edge-.*
-
X-Forwarded-Proto
-
X-Real-Ip
Cabeçalho de temporização do servidor
Use a configuração de cabeçalho Server-Timing
para habilitar o cabeçalho Server-Timing
em respostas HTTP enviadas do CloudFront. Você pode usar esse cabeçalho para visualizar métricas que podem ajudar a obter insights sobre o comportamento e a performance do CloudFront e sua origem. Por exemplo, você pode ver qual camada de cache forneceu um acerto de cache. Ou, você poderá ver a latência do primeiro byte da origem se houver uma falha de cache. As métricas no cabeçalho Server-Timing
podem ajudar a solucionar problemas ou testar a eficiência da configuração do CloudFront ou da origem.
Para obter mais informações sobre como usar o cabeçalho de Server-Timing
com o CloudFront, consulte os tópicos a seguir.
Para habilitar o cabeçalho Server-Timing
, crie (ou edite) uma política de cabeçalhos de resposta.
Tópicos
Taxa de amostragem e cabeçalho de solicitação Pragma
Ao habilitar o cabeçalho Server-Timing
em uma política de cabeçalhos de resposta, você também especifica a taxa de amostragem. A taxa de amostragem é um número de 0 a 100 (incluído) que especifica a porcentagem de respostas às quais você deseja que o CloudFront adicione o cabeçalho Server-Timing
. Quando você define a taxa de amostragem como 100, o CloudFront adiciona o cabeçalho Server-Timing
às respostas HTTP de todas as solicitações que corresponderem ao comportamento de cache ao qual a política de cabeçalhos de resposta está anexada. Quando você o define como 50, o CloudFront adiciona o cabeçalho a 50% das respostas das solicitações que corresponderem ao comportamento do cache. Você pode definir a taxa de amostragem para qualquer número de 0 a 100 com até quatro casas decimais.
Quando a taxa de amostragem é definida como um número menor que 100, você não pode controlar a quais respostas o CloudFront adiciona o cabeçalho Server-Timing
, apenas a porcentagem. No entanto, você pode adicionar o cabeçalho Pragma
com um valor definido como server-timing
em uma solicitação HTTP para receber o cabeçalho Server-Timing
na resposta a essa solicitação. Isso funciona independentemente da taxa de amostragem definida. Mesmo quando a taxa de amostragem estiver definida como zero (0), o CloudFront adicionará o cabeçalho Server-Timing
à resposta se a solicitação contiver o cabeçalho Pragma: server-timing
.
Cabeçalho de Server-Timing da origem
Quando há uma falha no cache e o CloudFront encaminha a solicitação à origem, a origem pode incluir um cabeçalho de Server-Timing
em sua resposta ao CloudFront. Nesse caso, o CloudFront adiciona suas métricas ao cabeçalho de Server-Timing
que recebeu da origem. A resposta que o CloudFront envia ao visualizador contém um único cabeçalho de Server-Timing
que inclui o valor que veio da origem e as métricas que o CloudFront adicionou. O valor do cabeçalho da origem pode estar no final ou entre dois conjuntos de métricas que o CloudFront adiciona ao cabeçalho.
Quando há uma ocorrência de cache, a resposta que o CloudFront envia ao visualizador contém um único cabeçalho de Server-Timing
que inclui apenas as métricas do CloudFront no valor do cabeçalho (o valor da origem não está incluído).
Métricas de cabeçalho de temporização do servidor
Quando o CloudFront adiciona o cabeçalho Server-Timing
a uma resposta HTTP, o valor do cabeçalho contém uma ou mais métricas que podem ajudar a obter insights sobre o comportamento e a performance do CloudFront. A lista a seguir contém todas as métricas e seus possíveis valores. Um cabeçalho Server-Timing
contém apenas algumas dessas métricas, dependendo da natureza da solicitação e da resposta por meio do CloudFront.
Algumas dessas métricas estão incluídas no cabeçalho Server-Timing
com apenas um nome (sem valor). Outras são um nome e um valor. Quando uma métrica tem um valor, o nome e valor são separados por um ponto e vírgula (;
). Quando o cabeçalho contém mais de uma métrica, as métricas são separadas por uma vírgula (,
).
- cdn-cache-hit
-
O CloudFront forneceu uma resposta do cache sem fazer uma solicitação para a origem.
- cdn-cache-refresh
-
O CloudFront forneceu uma resposta do cache depois de enviar uma solicitação para a origem a fim de verificar se o objeto armazenado em cache ainda é válido. Nesse caso, o CloudFront não recuperou o objeto completo da origem.
- cdn-cache-miss
-
O CloudFront não forneceu a resposta do cache. Nesse caso, o CloudFront solicitou o objeto completo da origem antes de retornar a resposta.
- cdn-pop
-
Contém um valor que descreve qual ponto de presença (POP) do CloudFront processou a solicitação.
- cdn-rid
-
Contém um valor com o identificador exclusivo do CloudFront para a solicitação. Você pode usar esse identificador de solicitação (RID) ao solucionar problemas com Support.
- cdn-hit-layer
-
Esta métrica está presente quando o CloudFront fornece uma resposta do cache sem fazer uma solicitação à origem. Ela contém um dos seguintes valores:
-
EDGE: o CloudFront forneceu a resposta em cache de um local do POP.
-
REC: o CloudFront forneceu a resposta em cache de um local do cache de borda regional (REC).
-
Origin Shield: o CloudFront forneceu a resposta em cache do REC que está agindo como o escudo de origem.
-
- cdn-upstream-layer
-
Quando o CloudFront solicita o objeto completo da origem, essa métrica está presente e contém um dos seguintes valores:
-
EDGE: um local do POP enviou a solicitação diretamente para a origem.
-
REC: um local do REC enviou a solicitação diretamente à origem.
-
Origin Shield: o REC que está agindo como escudo de origemenviou a solicitação diretamente à origem.
-
- cdn-upstream-dns
-
Contém um valor com o número de milissegundos que foram gastos recuperando o registro DNS para a origem. Um valor de zero (0) indica que o CloudFront usou um resultado de DNS em cache ou reutilizou uma conexão existente.
- cdn-upstream-connect
-
Contém um valor com o número de milissegundos entre quando a solicitação DNS de origem foi concluída e uma conexão TCP (e TLS, se aplicável) com a origem foi concluída. Um valor de zero (0) indica que o CloudFront reutilizou uma conexão existente.
- cdn-upstream-fbl
-
Contém um valor com o número de milissegundos entre quando a solicitação HTTP de origem foi concluída e quando o primeiro byte foi recebido na resposta da origem (latência do primeiro byte).
- cdn-downstream-fbl
-
Contém um valor com o número de milissegundos entre quando o local da borda terminou de receber a solicitação e quando enviou o primeiro byte da resposta ao visualizador.
Exemplos de cabeçalho de temporização do servidor
Veja a seguir exemplos de um cabeçalho Server-Timing
que um visualizador pode receber do CloudFront quando a configuração do cabeçalho Server-Timing
está habilitada.
exemplo – cache miss
O exemplo a seguir mostra um cabeçalho Server-Timing
que um visualizador pode receber quando o objeto solicitado não está no cache do CloudFront.
Server-Timing: cdn-upstream-layer;desc="EDGE",cdn-upstream-dns;dur=0,cdn-upstream-connect;dur=114,cdn-upstream-fbl;dur=177,cdn-cache-miss,cdn-pop;desc="PHX50-C2",cdn-rid;desc="yNPsyYn7skvTzwWkq3Wcc8Nj_foxUjQUe9H1ifslzWhb0w7aLbFvGg==",cdn-downstream-fbl;dur=436
Esse cabeçalho de Server-Timing
indica o seguinte:
-
A solicitação de origem foi enviada de um local de ponto de presença (POP) do CloudFront (
cdn-upstream-layer;desc="EDGE"
). -
O CloudFront usou um resultado DNS armazenado em cache para a origem (
cdn-upstream-dns;dur=0
). -
Foram necessários 114 milissegundos para o CloudFront concluir a conexão TCP (e TLS, se aplicável) com a origem (
cdn-upstream-connect;dur=114
). -
Foram necessários 177 milissegundos para o CloudFront receber o primeiro byte da resposta da origem, após concluir a solicitação (
cdn-upstream-fbl;dur=177
). -
O objeto solicitado não estava no cache do CloudFront (
cdn-cache-miss
). -
A solicitação foi recebida no local da borda identificado pelo código
PHX50-C2
(cdn-pop;desc="PHX50-C2"
). -
O ID exclusivo do CloudFront para essa solicitação era
yNPsyYn7skvTzwWkq3Wcc8Nj_foxUjQUe9H1ifslzWhb0w7aLbFvGg==
(cdn-rid;desc="yNPsyYn7skvTzwWkq3Wcc8Nj_foxUjQUe9H1ifslzWhb0w7aLbFvGg=="
). -
Foram necessários 436 milissegundos para o CloudFront enviar o primeiro byte da resposta ao visualizador, depois de receber a solicitação do visualizador (
cdn-downstream-fbl;dur=436
).
exemplo – cache hit
O exemplo a seguir mostra um cabeçalho Server-Timing
que um visualizador pode receber quando o objeto solicitado está no cache do CloudFront.
Server-Timing: cdn-cache-hit,cdn-pop;desc="SEA19-C1",cdn-rid;desc="nQBz4aJU2kP9iC3KHEq7vFxfMozu-VYBwGzkW9diOpeVc7xsrLKj-g==",cdn-hit-layer;desc="REC",cdn-downstream-fbl;dur=137
Esse cabeçalho de Server-Timing
indica o seguinte:
-
O objeto solicitado estava no cache (
cdn-cache-hit
). -
A solicitação foi recebida no local da borda identificado pelo código
SEA19-C1
(cdn-pop;desc="SEA19-C1"
). -
O ID exclusivo do CloudFront para essa solicitação era
nQBz4aJU2kP9iC3KHEq7vFxfMozu-VYBwGzkW9diOpeVc7xsrLKj-g==
(cdn-rid;desc="nQBz4aJU2kP9iC3KHEq7vFxfMozu-VYBwGzkW9diOpeVc7xsrLKj-g=="
). -
O objeto solicitado foi armazenado em cache em um local de cache de borda regional (REC) (
cdn-hit-layer;desc="REC"
). -
Foram necessários 137 milissegundos para CloudFront enviar o primeiro byte da resposta ao visualizador, depois de receber a solicitação do visualizador (
cdn-downstream-fbl;dur=137
).