Descripción de las políticas de encabezados de respuesta - Amazon CloudFront

Descripción de las políticas de encabezados de respuesta

Puede utilizar una política de encabezados de respuesta para especificar los encabezados HTTP que Amazon CloudFront elimina o añade en las respuestas que envía a los lectores. Para obtener más información sobre las políticas de encabezados de respuesta y los motivos para usarlas, consulte Añadido o eliminación de encabezados HTTP en las respuestas de CloudFront con una política.

En los siguientes temas, se explica la configuración de una política de encabezados de respuesta. La configuración se agrupa en categorías, que se representan en los siguientes temas.

Detalles de la política (metadatos)

La configuración de detalles de la política contiene metadatos sobre una política de encabezados de respuesta.

  • Nombre: un nombre para identificar la política de encabezados de respuesta. En la consola, se utiliza el nombre para adjuntar la política a un comportamiento de la caché.

  • Descripción (opcional): un comentario para describir la política de encabezados de respuesta. Esto es opcional, pero puede ayudar a identificar el propósito de la política.

Encabezados de CORS

La configuración de uso compartido de recursos entre orígenes (CORS) permite agregar y configurar encabezados CORS en una política de encabezados de respuesta.

Esta lista se centra en cómo especificar la configuración y los valores válidos en una política de encabezados de respuesta. Para obtener más información sobre cada uno de estos encabezados y cómo se utilizan para solicitudes y respuestas de CORS reales, consulte el artículo sobre el uso compartido de recursos entre orígenes en MDN Web Docs y la especificación del protocolo CORS.

Access-Control-Allow-Credentials

Esta es una configuración booleana (true o false) que determina si CloudFront añade el encabezado Access-Control-Allow-Credentials en las respuestas a las solicitudes de CORS. Cuando esta configuración se configura como true, CloudFront agrega el encabezado Access-Control-Allow-Credentials: true en las respuestas a las solicitudes de CORS. De lo contrario, CloudFront no agrega este encabezado a las respuestas.

Access-Control-Allow-Headers

Especifica los nombres de encabezado que CloudFront utiliza como valores para el encabezado Access-Control-Allow-Headers en las respuestas a las solicitudes de comprobación previa de CORS. Los valores válidos para esta configuración incluyen los nombres de encabezado HTTP o el carácter comodín (*), lo que indica que se permiten todos los encabezados.

nota

El encabezado Authorization no puede usar un comodín y debe aparecer de forma explícita.

Ejemplos de usos válidos del carácter comodín
Ejemplo Coincidirá No coincidirá

x-amz-*

x-amz-test

x-amz-

x-amz

x-*-amz

x-test-amz

x--amz

* Todos los encabezados excepto Authorization Authorization
Access-Control-Allow-Methods

Especifica los métodos HTTP que CloudFront utiliza como valores para el encabezado Access-Control-Allow-Methods en las respuestas a las solicitudes de comprobación previa de CORS. Los valores válidos son GET, DELETE, HEAD, OPTIONS, PATCH, POST, PUT y ALL. ALL es un valor especial que incluye todos los métodos HTTP enumerados.

Access-Control-Allow-Origin

Especifica los valores que CloudFront puede utilizar en el encabezado de respuesta Access-Control-Allow-Origin. Los valores válidos para esta configuración incluyen un origen específico (como http://www.example.com) o el carácter comodín (*) que indica que se permiten todos los orígenes.

Notas
  • Se permite el carácter comodín (*) como subdominio más a la izquierda (*.example.org).

  • El carácter comodín (*) no está permitido en las siguientes posiciones:

    • Dominios de nivel superior (example.*)

    • A la derecha de los subdominios (test.*.example.org) o en cualquier subdominio (*test.example.org)

    • Dentro de los términos (exa*mple.org)

Para ver ejemplos de formas de utilizar el carácter comodín, consulte la tabla siguiente.

Ejemplo Coincidirá No coincidirá

http://*.example.org

http://www.example.org

http://test.example.org

https://test.example.org

https://test.example.org:123

http://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 los nombres de encabezado que CloudFront utiliza como valores para el encabezado Access-Control-Expose-Headers en las respuestas a las solicitudes de CORS. Los valores válidos para esta configuración incluyen los nombres de encabezado HTTP o el carácter comodín (*).

Access-Control-Max-Age

Se trata de la cantidad de segundos que CloudFront utiliza como valor para el encabezado Access-Control-Max-Age en las respuestas a las solicitudes de comprobación previa de CORS.

Invalidación de origen

Configuración booleana que determina cómo se comporta CloudFront cuando la respuesta del origen contiene uno de los encabezados de CORS que también se encuentran en la política.

  • Cuando se establece como true y la respuesta de origen contiene un encabezado de CORS que también está en la política, CloudFront agrega el encabezado de CORS en la política a la respuesta. A continuación, CloudFront envía esa respuesta al espectador. CloudFront ignora el encabezado que recibió del origen.

  • Cuando es false y la respuesta de origen contiene un encabezado de CORS (independientemente de si el encabezado de CORS también está en la política), CloudFront incluye el encabezado de CORS que recibió del origen en la respuesta. CloudFront no agrega ningún encabezado de CORS de la política a la respuesta que se envía al lector.

Encabezados de seguridad

Puede usar la configuración de encabezados de seguridad permite agregar y configurar varios encabezados de respuesta HTTP relacionados con la seguridad en una política de encabezados de respuesta.

En esta lista se describe cómo se pueden especificar configuraciones y valores válidos en una política de encabezados de respuesta. Para obtener más información sobre cada uno de estos encabezados y cómo se utilizan en las respuestas HTTP reales, consulte los enlaces a MDN Web Docs.

Política de seguridad de contenido

Especifica las directivas de la política de seguridad del contenido que CloudFront utiliza como valores para el encabezado de respuesta Content-Security-Policy.

Para obtener más información sobre este encabezado y las directivas de políticas válidas, consulte Content-Security-Policy en MDN Web Docs.

nota

El valor de encabezado Content-Security-Policy está limitado a 1783 caracteres.

Política de referencia

Especifica la directiva de política de referencia que CloudFront utiliza como valor para el encabezado de respuesta Referrer-Policy. Los valores válidos para esta configuración son no-referrer, no-referrer-when-downgrade, origin, origin-when-cross-origin, same-origin, strict-origin, strict-origin-when-cross-origin y unsafe-url.

Para obtener más información acerca de este encabezado y estas directivas, consulte Referrer-Policy en MDN Web Docs.

Seguridad de transporte estricta

Especifica las directivas y la configuración que CloudFront utiliza como valor para el encabezado de respuesta Strict-Transport-Security. Para esta configuración, especifique por separado lo siguiente:

  • la cantidad de segundos, que CloudFront utiliza como valor para la directiva max-age de este encabezado

  • una configuración booleana (true o false) para preload, que determina si CloudFront incluye la directiva preload en el valor de este encabezado

  • una configuración booleana (true o false) para includeSubDomains, que determina si CloudFront incluye la directiva includeSubDomains en el valor de este encabezado

Para obtener más información acerca de este encabezado y estas directivas, consulte Strict-Transport-Security en MDN Web Docs.

Opciones de tipo de contenido X

Es una configuración booleana (true o false) que determina si CloudFront añade el encabezado X-Content-Type-Options a las respuestas. Cuando esta configuración es true, CloudFront agrega el encabezado X-Content-Type-Options: nosniff a respuestas. De lo contrario, CloudFront no agrega este encabezado.

Para obtener más información sobre este encabezado, consulte X-Content-Type-Options en MDN Web Docs.

Opciones de marco X

Especifica la directiva que CloudFront utiliza como valor para el encabezado de respuesta X-Frame-Options. Los valores válidos para este ajuste son DENY o SAMEORIGIN.

Para obtener más información sobre este encabezado y estas directivas, consulte X-Frame-Options en MDN Web Docs.

Protección X-XSS

Especifica las directivas y la configuración que CloudFront utiliza como valor para el encabezado de respuesta X-XSS-Protection. Para esta configuración, especifique por separado lo siguiente:

  • una configuración X-XSS-Protection de 0 (desactiva el filtrado XSS) o 1 (habilita el filtrado XSS)

  • una configuración booleana (true o false) para block, que determina si CloudFront incluye la directiva mode=block en el valor de este encabezado

  • un URI de informes, que determina si CloudFront incluye la directiva report=reporting URI en el valor de este encabezado

Puede especificar true para block, o puede especificar un URI de informes, pero no puede especificar ambos a la vez. Para obtener más información acerca de este encabezado y estas directivas, consulte X-XSS-Protection en MDN Web Docs.

Invalidación de origen

Cada una de estas configuraciones de encabezados de seguridad contiene una configuración booleana (true o false) que determina cómo se comporta CloudFront cuando la respuesta del origen contiene ese encabezado.

Cuando esta configuración se establece como true y la respuesta de origen contiene el encabezado, CloudFront agrega el encabezado a la política a la respuesta que envía al lector. Ignora el encabezado que recibió del origen.

Cuando esta configuración se establece como false y la respuesta del origen contiene el encabezado, CloudFront incluye el encabezado que recibió del origen en la respuesta que envía al lector.

Cuando la respuesta de origen no contiene el encabezado, CloudFront lo agrega a la política a la respuesta que envía al lector. CloudFront hace esto cuando esta configuración se establece en true o false.

Encabezados personalizados

Puede usar la configuración de encabezados personalizados para agregar y configurar encabezados HTTP personalizados en una política de encabezados de respuesta. CloudFront agrega estos encabezados a cada respuesta que devuelve a los lectores. Para cada encabezado personalizado, también se especifica el valor del encabezado, aunque especificar un valor es opcional. Esto se debe a que CloudFront puede agregar un encabezado de respuesta sin valor.

Cada encabezado personalizado también tiene su propia configuración de Invalidación de origen:

  • Cuando esta configuración se establece como true y la respuesta de origen contiene el encabezado personalizado que está en la política, CloudFront agrega el encabezado de la política a la respuesta que envía al lector. Ignora el encabezado que recibió del origen.

  • Cuando esta configuración es false y la respuesta del origen contiene el encabezado personalizado que está en la política, CloudFront incluye el encabezado personalizado que recibió del origen en la respuesta que envía al lector.

  • Cuando la respuesta de origen no contiene el encabezado personalizado que está en la política, CloudFront agrega el encabezado de la política a la respuesta que envía al lector. CloudFront hace esto cuando esta configuración se establece en true o false.

Eliminar encabezados

Puede especificar los encabezados que desee que CloudFront elimine de las respuestas que recibe del origen para que no se incluyan en las respuestas que CloudFront envía a los lectores. CloudFront elimina los encabezados de todas las respuestas que envía a los lectores, independientemente de si los objetos se envían desde la memoria caché de CloudFront o desde el origen. Por ejemplo, puede eliminar los encabezados que no son útiles para los navegadores, como X-Powered-By o Vary, para que CloudFront los elimine de las respuestas que envía a los lectores.

Al especificar los encabezados que se van a eliminar mediante una política de encabezados de respuesta, CloudFront elimina primero los encabezados y, a continuación, añade los encabezados que se especifiquen en otras secciones de la política de encabezados de respuesta (encabezados de CORS, encabezados de seguridad, encabezados personalizados, etc.). Si especifica un encabezado para eliminarlo, pero también añade el mismo encabezado en otra sección de la política, CloudFront incluye el encabezado en las respuestas que envía a los lectores.

nota

Puede utilizar una política de encabezados de respuesta para eliminar los encabezados Server y Date que CloudFront ha recibido del origen, de modo que estos encabezados (tal como se recibieron del origen) no se incluyan en las respuestas que CloudFront envía a los lectores. Sin embargo, si lo hace, CloudFront añade su propia versión a las respuestas que envía a los lectores. El valor del encabezado Server que añade CloudFront es CloudFront.

Encabezados que no puede eliminar

No puede eliminar los siguientes encabezados mediante una política de encabezados de respuesta. Si especifica estos encabezados en la sección Remove headers (Eliminar encabezados) de una política de encabezados de respuesta (ResponseHeadersPolicyRemoveHeadersConfig en la API), recibirá un error.

  • 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

Encabezado Server-Timing

Utilice la configuración de encabezado Server-Timing para habilitar el encabezado Server-Timing en las respuestas HTTP enviadas desde CloudFront. Puede utilizar este encabezado para ver las métricas que pueden ayudarle a obtener información sobre el comportamiento y el rendimiento de CloudFront y su origen. Por ejemplo, puede ver qué capa de caché sirvió un acierto de caché. O puede ver la latencia del primer byte desde el origen si hay un error de caché. Las métricas del encabezado Server-Timing pueden ayudarle a solucionar problemas o a probar la eficacia de su configuración de CloudFront o del origen.

Para obtener más información sobre las métricas de CloudFront en el encabezado Server-Timing, consulte los siguientes temas.

Para habilitar el encabezado Server-Timing, cree (o edite) una política de encabezados de respuesta.

Frecuencia de muestreo y cabecera de solicitud de Pragma

Cuando se habilita el encabezado Server-Timing en una política de encabezados de respuesta, también se especifica la frecuencia de muestreo. La tasa de muestreo es un número de 0 a 100 (inclusive) que especifica el porcentaje de respuestas a las que desea que CloudFront agregue el encabezado Server-Timing. Cuando se establece la tasa de muestreo en 100, CloudFront agrega el encabezado Server-Timing a la respuesta HTTP para cada solicitud que coincida con el comportamiento de la caché a la que se adjunta la política de encabezados de respuesta. Si lo establece en 50, CloudFront agrega el encabezado al 50 % de las respuestas de las solicitudes que coinciden con el comportamiento de caché. Puede establecer la frecuencia de muestreo en cualquier número de 0 a 100 con un máximo de cuatro decimales.

Cuando la tasa de muestreo se establece en un número inferior a 100, no se puede controlar a qué respuestas agrega CloudFront el encabezado Server-Timing, solo el porcentaje. No obstante, puede agregar el encabezado Pragma con un valor establecido como server-timing en una solicitud HTTP para recibir el encabezado Server-Timing en la respuesta a esa solicitud. Esto funciona independientemente de la frecuencia de muestreo. Incluso si la tasa de muestreo se establece en cero (0), CloudFront agrega el encabezado Server-Timing a la respuesta si la solicitud contiene el encabezado Pragma: server-timing.

Encabezado Server-Timing del origen

Si se produce un error de caché y CloudFront reenvía la solicitud al origen, el origen puede incluir un encabezado Server-Timing en su respuesta a CloudFront. En este caso, CloudFront agrega sus métricas al encabezado Server-Timing que recibió del origen. La respuesta que CloudFront envía al espectador contiene un único encabezado Server-Timing que incluye el valor que proviene del origen y las métricas que agregó CloudFront. El valor del encabezado del origen puede estar al final o entre dos conjuntos de métricas que CloudFront agrega al encabezado.

Cuando se produce un acierto de caché, la respuesta que CloudFront envía al espectador contiene un encabezado Server-Timing que incluye solo las métricas de CloudFront en el valor del encabezado (no se incluye el valor del origen).

Métricas del encabezado Server-Timing

Cuando CloudFront agrega el encabezado a una respuesta HTTP, el valor del encabezado Server-Timing contiene una o más métricas que pueden ayudarle a obtener información sobre el comportamiento y el rendimiento de CloudFront. La siguiente lista contiene todas las métricas y sus valores potenciales. Un encabezado Server-Timing contiene solo algunas de estas métricas, según la naturaleza de la solicitud y la respuesta a través de CloudFront.

Algunas de estas métricas se incluyen en el encabezado Server-Timing solo con un nombre (sin valor). Otras son un nombre y un valor. Cuando una métrica tiene un valor, el nombre y el valor están separados por un punto y coma (;). Cuando el encabezado contiene más de una métrica, estas se separan con una coma (,).

cdn-cache-hit

CloudFront proporcionó una respuesta desde la caché sin hacer una solicitud al origen.

cdn-cache-refresh

CloudFront proporcionó una respuesta desde la caché después de enviar una solicitud al origen para verificar que el objeto almacenado en la caché sigue siendo válido. En este caso, CloudFront no recuperó el objeto completo del origen.

cdn-cache-miss

CloudFront no proporcionó la respuesta desde la caché. En este caso, CloudFront solicitó el objeto completo al origen antes de devolver la respuesta.

cdn-pop

Contiene un valor que describe qué punto de presencia (POP) de CloudFront ha gestionado la solicitud.

cdn-rid

Contiene un valor con el identificador único de CloudFront para la solicitud. Puede utilizar este identificador de solicitud (RID) cuando solucione problemas con Soporte.

cdn-hit-layer

Esta métrica está presente cuando CloudFront proporciona una respuesta desde la caché sin realizar una solicitud al origen. Contiene uno de los siguientes valores:

  • EDGE: CloudFront proporcionó la respuesta en caché desde una ubicación POP.

  • REC: CloudFront proporcionó la respuesta en caché desde una ubicación de caché de borde regional (REC).

  • Origin Shield: CloudFront proporcionó la respuesta en caché de REC que está actuando como Origin Shield.

cdn-upstream-layer

Cuando CloudFront solicita el objeto completo desde el origen, esta métrica está presente y contiene uno de los siguientes valores:

  • EDGE: una ubicación POP envió la solicitud directamente al origen.

  • REC: una ubicación REC envió la solicitud directamente al origen.

  • Origin Shield: la REC que actúa de Origin Shield envió la solicitud directamente al origen.

cdn-upstream-dns

Contiene un valor con el número de milisegundos que se emplearon en recuperar el registro DNS para el origen. Un valor de cero (0) indica que CloudFront utilizó un resultado de DNS en caché o reutilizó una conexión existente.

cdn-upstream-connect

Contiene un valor con el número de milisegundos transcurridos desde que se completó la solicitud de DNS de origen hasta que se completó una conexión TCP (y TLS, si procede) con el origen. Un valor de cero (0) indica que CloudFront reutilizó una conexión existente.

cdn-upstream-fbl

Contiene un valor con el número de milisegundos que transcurren entre el momento en que se completa la solicitud HTTP de origen y el momento en que se recibe el primer byte en la respuesta del origen (latencia del primer byte).

cdn-upstream-fbl

Contiene un valor con el número de milisegundos que transcurren entre el momento en que la ubicación periférica terminó de recibir la solicitud y el momento en que se envió el primer byte de respuesta al lector.

Ejemplos del encabezado Sever-Timing

A continuación se muestran ejemplos de un encabezado Server-Timing que un lector podría recibir de CloudFront cuando la configuración del encabezado Server-Timing está habilitada.

ejemplo : error de caché

En el siguiente ejemplo se muestra un encabezado Server-Timing que puede recibir un lector cuando el objeto solicitado no está en la caché de 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

Este encabezado Server-Timing indica lo siguiente:

  • La solicitud de origen se envió desde una ubicación de punto de presencia (POP) de CloudFront (cdn-upstream-layer;desc="EDGE").

  • CloudFront usó un resultado de DNS en caché para el origen (cdn-upstream-dns;dur=0).

  • CloudFront tardó 114 milisegundos en completar la conexión TCP (y TLS, si procede) con el origen (cdn-upstream-connect;dur=114).

  • CloudFront tardó 177 milisegundos en recibir el primer byte de la respuesta del origen, tras completar la solicitud (cdn-upstream-fbl;dur=177).

  • El objeto solicitado no estaba en la caché de CloudFront (cdn-cache-miss).

  • La solicitud se recibió en la ubicación periférica identificada por el código PHX50-C2 (cdn-pop;desc="PHX50-C2").

  • El ID único de CloudFront correspondiente a esta solicitud fue yNPsyYn7skvTzwWkq3Wcc8Nj_foxUjQUe9H1ifslzWhb0w7aLbFvGg== (cdn-rid;desc="yNPsyYn7skvTzwWkq3Wcc8Nj_foxUjQUe9H1ifslzWhb0w7aLbFvGg==").

  • CloudFront tardó 436 milisegundos en enviar el primer byte de la respuesta al espectador, tras recibir la solicitud del lector (cdn-downstream-fbl;dur=436).

ejemplo : acierto de caché

En el siguiente ejemplo se muestra un encabezado Server-Timing que un lector podría recibir cuando el objeto solicitado está en la caché de 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

Este encabezado Server-Timing indica lo siguiente:

  • El objeto solicitado estaba en la caché (cdn-cache-hit).

  • La solicitud se recibió en la ubicación periférica identificada por el código SEA19-C1 (cdn-pop;desc="SEA19-C1").

  • El ID único de CloudFront correspondiente a esta solicitud fue nQBz4aJU2kP9iC3KHEq7vFxfMozu-VYBwGzkW9diOpeVc7xsrLKj-g== (cdn-rid;desc="nQBz4aJU2kP9iC3KHEq7vFxfMozu-VYBwGzkW9diOpeVc7xsrLKj-g==").

  • El objeto solicitado se almacenó en una ubicación periférica regional (REC) (cdn-hit-layer;desc="REC").

  • CloudFront tardó 137 milisegundos en enviar el primer byte de la respuesta al espectador, tras recibir la solicitud del lector (cdn-downstream-fbl;dur=137).