Noções básicas das políticas de cabeçalhos de resposta - Amazon CloudFront

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

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 a Amazon CloudFront remove ou adiciona às respostas que envia aos espectadores. 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 nas respostas CloudFront.

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.

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 no MDN Web Docs e a Especificação do protocolo CORS.

Access-Control-Allow-Credentials

Essa é uma configuração booleana (trueoufalse) que determina se CloudFront adiciona o Access-Control-Allow-Credentials cabeçalho nas respostas às solicitações do CORS. Quando essa configuração é definida comotrue, CloudFront adiciona o Access-Control-Allow-Credentials: true cabeçalho nas respostas às solicitações do CORS. Caso contrário, CloudFront não adiciona esse cabeçalho às respostas.

Access-Control-Allow-Headers

Especifica os nomes dos cabeçalhos que são CloudFront usados como valores para o Access-Control-Allow-Headers cabeçalho nas respostas às solicitações de preflight do 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. Observe que o cabeçalho Authorization não pode ter caracteres curinga e sempre precisa ser listado explicitamente.

Exemplos de uso válido do caractere curinga são mostrados nesta tabela:

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 são CloudFront usados como valores para o Access-Control-Allow-Methods cabeçalho nas respostas às solicitações de preflight do CORS. Os valores válidos são GET, DELETE, HEAD, OPTIONS, PATCH, POST, PUT e ALL. ALL é um valor especial que inclui todos os métodos de HTTP listados.

Access-Control-Allow-Origin

Especifica os valores que CloudFront podem ser usados no cabeçalho da Access-Control-Allow-Origin resposta. Os valores válidos para essa configuração incluem uma origem específica (como http://www.example.com) ou o caractere curinga (*), o que indica que todas as origens são permitidas. Para obter exemplos, consulte a tabela a seguir:

nota

O caractere curinga (*) é permitido como a parte mais à esquerda do domí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)

  • Dentro dos termos (exa*mple.org)

Exemplos de uso válido do caractere curinga são mostrados nesta tabela:

Exemplo Corresponderá Não corresponderá

http://*.example.org

http://www.example.com

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 dos cabeçalhos que são CloudFront usados como valores para o Access-Control-Expose-Headers cabeçalho nas respostas às solicitações do 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, CloudFront usado como valor para o Access-Control-Max-Age cabeçalho nas respostas às solicitações de preflight do CORS.

Substituição de origem

Essa é uma configuração booleana (trueoufalse) que determina como CloudFront se comporta quando a resposta da origem contém um dos cabeçalhos do CORS que também está na política.

Quando essa configuração é definida como true e a resposta de origem contém um cabeçalho CORS que também está na política, CloudFront adiciona o cabeçalho CORS na política à resposta que ela envia ao visualizador. Ele ignora o cabeçalho que recebeu da origem.

Quando essa configuração é false e a resposta de origem contém um cabeçalho CORS que também está na política, CloudFront inclua o cabeçalho CORS recebido da origem na resposta enviada ao visualizador.

Quando a resposta de origem não contém um cabeçalho CORS que esteja na política, CloudFront adiciona o cabeçalho CORS na política à resposta que ela envia ao visualizador. CloudFront faz isso quando essa configuração é definida como true oufalse.

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 da política de segurança de conteúdo que são CloudFront usadas como valores para o cabeçalho da Content-Security-Policy resposta.

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 de referência que CloudFront usa como valor para o cabeçalho de Referrer-Policy resposta. Os valores válidos para essa configuração são no-referrer, no-referrer-when-downgrade, origin, origin-when-cross-origin, same-origin, strict-origin, strict-origin-when-cross-origin e unsafe-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 configurações CloudFront usadas como valor para o cabeçalho da Strict-Transport-Security resposta. Para essa configuração, você especifica separadamente:

  • Um número de segundos, que CloudFront usa como valor para a max-age diretiva desse cabeçalho

  • Uma configuração booleana (trueoufalse) parapreload, que determina se CloudFront inclui a preload diretiva no valor desse cabeçalho

  • Uma configuração booleana (trueoufalse) paraincludeSubDomains, que determina se CloudFront inclui a includeSubDomains diretiva 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 booleana (trueoufalse) que determina se CloudFront adiciona o X-Content-Type-Options cabeçalho às respostas. Quando essa configuração étrue, CloudFront adiciona o X-Content-Type-Options: nosniff cabeçalho às respostas. Caso contrário, CloudFront não adiciona 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 CloudFront usada como valor para o cabeçalho da X-Frame-Options resposta. Os valores válidos para essa configuração são DENY ou SAMEORIGIN.

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 configurações CloudFront usadas como valor para o cabeçalho da X-XSS-Protection resposta. Para essa configuração, você especifica separadamente:

  • Uma configuração X-XSS-Protection de 0 (desabilita a filtragem de XSS) ou 1 (habilita a filtragem de XSS)

  • Uma configuração booleana (trueoufalse) parablock, que determina se CloudFront inclui a mode=block diretiva no valor desse cabeçalho

  • Um URI de relatório, que determina se CloudFront inclui a report=reporting URI diretiva no valor desse cabeçalho

Você pode especificar true para block, 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-Protection no MDN Web Docs.

Substituição de origem

Cada uma dessas configurações de cabeçalhos de segurança contém uma configuração booleana (trueoufalse) que determina como CloudFront se comporta quando a resposta da origem contém esse cabeçalho.

Quando essa configuração é definida como true e a resposta de origem contém o cabeçalho, CloudFront adiciona o cabeçalho na política à resposta que ela envia ao visualizador. Ele ignora o cabeçalho que recebeu da origem.

Quando essa configuração é definida como false e a resposta de origem contém o cabeçalho, CloudFront inclui o cabeçalho que ela recebeu da origem na resposta que ela envia ao visualizador.

Quando a resposta de origem não contém o cabeçalho, CloudFront adiciona o cabeçalho na política à resposta que ela envia ao visualizador. CloudFront faz isso quando essa configuração é definida como true oufalse.

Cabeçalhos personalizados

Você pode usar configurações de cabeçalhos personalizados para adicionar e configurar cabeçalhos HTTP personalizados em uma política de cabeçalhos de resposta. CloudFront adiciona esses cabeçalhos a cada resposta que 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 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 é definida como true e a resposta de origem contém o cabeçalho personalizado que está na política, CloudFront adiciona o cabeçalho personalizado na política à resposta que ela envia ao visualizador. Ele ignora o cabeçalho que recebeu da origem.

  • Quando essa configuração é false e a resposta de origem contém o cabeçalho personalizado que está na política, CloudFront inclui o cabeçalho personalizado que ela recebeu da origem na resposta que ela envia ao visualizador.

  • Quando a resposta de origem não contém o cabeçalho personalizado que está na política, CloudFront adiciona o cabeçalho personalizado na política à resposta que ela envia ao visualizador. CloudFront faz isso quando essa configuração é definida como true oufalse.

Remover cabeçalhos

Você pode especificar os cabeçalhos que CloudFront deseja remover das respostas recebidas da origem para que os cabeçalhos não sejam incluídos nas respostas CloudFront enviadas aos visualizadores. CloudFront remove os cabeçalhos de cada resposta que envia aos visualizadores, independentemente de os objetos serem servidos CloudFront do cache ou da origem. Por exemplo, você pode remover cabeçalhos que não são úteis para os navegadores, como X-Powered-By ouVary, para CloudFront remover esses cabeçalhos das respostas enviadas aos visualizadores.

Quando você especifica cabeçalhos a serem removidos usando uma política de cabeçalhos de resposta, primeiro CloudFront remove os cabeçalhos e, em seguida, adiciona quaisquer cabeçalhos especificados em outras seções da política de cabeçalhos de resposta (cabeçalhos 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, CloudFront inclua o cabeçalho nas respostas que ele envia aos visualizadores.

nota

Você pode usar uma política de cabeçalhos de resposta para remover Date os cabeçalhos Server e CloudFront recebidos da origem, para que esses cabeçalhos (conforme recebidos da origem) não sejam incluídos nas respostas CloudFront enviadas aos visualizadores. No entanto, se você fizer isso, CloudFront adicionará sua própria versão desses cabeçalhos às respostas que ele envia aos espectadores. Para o Server cabeçalho que CloudFront adiciona, o valor do cabeçalho é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 do Server-Timing cabeçalho para habilitar o Server-Timing cabeçalho nas respostas HTTP enviadas de CloudFront. Você pode usar esse cabeçalho para visualizar métricas que podem ajudá-lo a obter informações sobre o comportamento, o desempenho 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 Server-Timing cabeçalho podem ajudá-lo a solucionar problemas ou testar a eficiência de sua configuração CloudFront ou de origem.

Para obter mais informações sobre como usar o Server-Timing cabeçalho com 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.

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 (inclusive) que especifica a porcentagem de respostas às quais você CloudFront deseja adicionar o cabeçalho. Server-Timing Quando você define a taxa de amostragem como 100, CloudFront adiciona o Server-Timing cabeçalho à resposta HTTP para cada solicitação que corresponda ao comportamento do cache ao qual a política de cabeçalhos de resposta está anexada. Quando você define como 50, CloudFront adiciona o cabeçalho a 50% das respostas das solicitações que correspondem 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 quais respostas CloudFront adicionam o Server-Timing cabeçalho, somente 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 é definida como zero (0), CloudFront adiciona o Server-Timing cabeçalho à resposta se a solicitação contiver o Pragma: server-timing cabeçalho.

Cabeçalho de Server-Timing da origem

Quando há uma falha no cache e CloudFront encaminha a solicitação para a origem, a origem pode incluir um Server-Timing cabeçalho em sua resposta a. CloudFront Nesse caso, CloudFront adiciona suas métricas ao Server-Timing cabeçalho que recebeu da origem. A resposta CloudFront enviada ao visualizador contém um único Server-Timing cabeçalho que inclui o valor que veio da origem e as métricas CloudFront adicionadas. O valor do cabeçalho da origem pode estar no final ou entre dois conjuntos de métricas que são CloudFront adicionados ao cabeçalho.

Quando há uma ocorrência de cache, a resposta CloudFront enviada ao visualizador contém um único Server-Timing cabeçalho que inclui somente as CloudFront métricas 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 CloudFront adiciona o Server-Timing cabeçalho a uma resposta HTTP, o valor do cabeçalho contém uma ou mais métricas que podem ajudar você a obter insights sobre o comportamento, o desempenho CloudFront e sua origem. A lista a seguir contém todas as métricas e seus possíveis valores. Um Server-Timing cabeçalho contém somente algumas dessas métricas, dependendo da natureza da solicitação e da resposta 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

CloudFront forneceu uma resposta do cache sem fazer uma solicitação à origem.

cdn-cache-refresh

CloudFront forneceu uma resposta do cache após enviar uma solicitação à origem para verificar se o objeto em cache ainda é válido. Nesse caso, CloudFront não recuperou o objeto completo da origem.

cdn-cache-miss

CloudFront não forneceu a resposta do cache. Nesse caso, CloudFront solicitou o objeto completo da origem antes de retornar a resposta.

cdn-pop

Contém um valor que descreve qual CloudFront ponto de presença (POP) processou a solicitação.

cdn-rid

Contém um valor com o identificador CloudFront exclusivo da solicitação. Você pode usar esse identificador de solicitação (RID) ao solucionar problemas com AWS Support.

cdn-hit-layer

Essa métrica está presente quando CloudFront fornece uma resposta do cache sem fazer uma solicitação à origem. Ela contém um dos seguintes valores:

  • EDGE — CloudFront forneceu a resposta em cache de um local POP.

  • REC — CloudFront forneceu a resposta em cache de um local de cache de borda regional (REC).

  • Origin Shield — CloudFront forneceu a resposta em cache do REC que está atuando como Origin Shield.

cdn-upstream-layer

Quando 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 zero (0) indica que 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 uma conexão existente CloudFront foi reutilizada.

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 Server-Timing cabeçalho que um visualizador pode receber CloudFront quando a configuração do Server-Timing cabeçalho está ativada.

exemplo – cache miss

O exemplo a seguir mostra um Server-Timing cabeçalho que um visualizador pode receber quando o objeto solicitado não está no CloudFront cache.

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 CloudFront ponto de presença (POP) (cdn-upstream-layer;desc="EDGE").

  • CloudFront usou um resultado de DNS em cache para a origem ()cdn-upstream-dns;dur=0.

  • Foram necessários 114 milissegundos CloudFront para concluir a conexão TCP (e TLS, se aplicável) com a origem (). cdn-upstream-connect;dur=114

  • Foram necessários 177 milissegundos CloudFront para 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 CloudFront cache (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 CloudFront exclusivo dessa solicitação foi yNPsyYn7skvTzwWkq3Wcc8Nj_foxUjQUe9H1ifslzWhb0w7aLbFvGg== (cdn-rid;desc="yNPsyYn7skvTzwWkq3Wcc8Nj_foxUjQUe9H1ifslzWhb0w7aLbFvGg==").

  • Foram necessários 436 milissegundos CloudFront para 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 Server-Timing cabeçalho que um visualizador pode receber quando o objeto solicitado CloudFront está no cache.

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 CloudFront exclusivo dessa solicitação foi 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 CloudFront para enviar o primeiro byte da resposta ao visualizador, depois de receber a solicitação do visualizador (). cdn-downstream-fbl;dur=137