Encabezados
Los encabezados permiten establecer encabezados HTTP personalizados en la respuesta a una solicitud entrante en una ruta determinada.
Para establecer encabezados HTTP personalizados, puede usar la clave headers
en next.config.js
:
headers
es una función asíncrona que espera que se devuelva un array con objetos que tengan las propiedades source
y headers
:
source
: es el patrón de ruta de la solicitud entrante.headers
: es un array de objetos de encabezado de respuesta, con propiedadeskey
yvalue
.basePath
:false
oundefined
- si es false, el basePath no se incluirá al hacer coincidir, solo se puede usar para reescrituras externas.locale
:false
oundefined
- indica si no se debe incluir la configuración regional al hacer coincidir.has
: es un array de objetos has con las propiedadestype
,key
yvalue
.missing
: es un array de objetos missing con las propiedadestype
,key
yvalue
.
Los encabezados se verifican antes del sistema de archivos, que incluye páginas y archivos /public
.
Comportamiento de Sobrescritura de Encabezados
Si dos encabezados coinciden con la misma ruta y establecen la misma clave de encabezado, la última clave de encabezado sobrescribirá la primera. Usando los siguientes encabezados, la ruta /hello
resultará en que el encabezado x-hello
sea world
debido a que el último valor de encabezado establecido es world
.
Coincidencia de Rutas
Se permiten coincidencias de rutas, por ejemplo /blog/:slug
coincidirá con /blog/hello-world
(sin rutas anidadas):
Coincidencia de Rutas con Comodín
Para hacer coincidir una ruta con comodín, puede usar *
después de un parámetro, por ejemplo /blog/:slug*
coincidirá con /blog/a/b/c/d/hello-world
:
Coincidencia de Rutas con Expresiones Regulares
Para hacer coincidir una ruta con expresión regular, puede envolver la expresión regular entre paréntesis después de un parámetro, por ejemplo /blog/:slug(\\d{1,})
coincidirá con /blog/123
pero no con /blog/abc
:
Los siguientes caracteres (
, )
, {
, }
, :
, *
, +
, ?
se usan para coincidencias de rutas con expresiones regulares, por lo que cuando se usan en source
como valores no especiales deben escaparse agregando \\
antes de ellos:
Coincidencia de Encabezados, Cookies y Consultas
Para aplicar un encabezado solo cuando los valores de encabezado, cookie o consulta también coincidan, se puede usar el campo has
o no coincidan con el campo missing
. Tanto source
como todos los elementos has
deben coincidir y todos los elementos missing
no deben coincidir para que se aplique el encabezado.
Los elementos has
y missing
pueden tener los siguientes campos:
type
:String
- debe serheader
,cookie
,host
oquery
.key
:String
- la clave del tipo seleccionado con la que coincidir.value
:String
oundefined
- el valor a verificar, si es undefined, cualquier valor coincidirá. Se puede usar una cadena similar a regex para capturar una parte específica del valor, por ejemplo, si se usa el valorfirst-(?<paramName>.*)
parafirst-second
, entoncessecond
se podrá usar en el destino con:paramName
.
Encabezados con soporte para basePath
Cuando se usa soporte para basePath
con encabezados, cada source
se prefija automáticamente con el basePath
a menos que agregue basePath: false
al encabezado:
Encabezados con soporte para i18n
Cuando se usa soporte para i18n
con encabezados, cada source
se prefija automáticamente para manejar los locales
configurados a menos que agregue locale: false
al encabezado. Si se usa locale: false
, debe prefijar el source
con un locale para que coincida correctamente.
Cache-Control
Next.js establece el encabezado Cache-Control
como public, max-age=31536000, immutable
para recursos verdaderamente inmutables. Esto no se puede sobrescribir. Estos archivos inmutables contienen un hash SHA en el nombre del archivo, por lo que se pueden almacenar en caché indefinidamente de forma segura. Por ejemplo, Importación de imágenes estáticas. No puede establecer encabezados Cache-Control
en next.config.js
para estos recursos.
Sin embargo, puede establecer encabezados Cache-Control
para otras respuestas o datos.
Obtenga más información sobre caché con el Enrutador de la Aplicación.
Opciones
CORS
Intercambio de Recursos de Origen Cruzado (CORS) es una característica de seguridad que le permite controlar qué sitios pueden acceder a sus recursos. Puede establecer el encabezado Access-Control-Allow-Origin
para permitir que un origen específico acceda a sus Manejadores de Ruta.
X-DNS-Prefetch-Control
Este encabezado controla la búsqueda previa de DNS, permitiendo que los navegadores realicen proactivamente la resolución de nombres de dominio en enlaces externos, imágenes, CSS, JavaScript y más. Esta búsqueda previa se realiza en segundo plano, por lo que es más probable que el DNS se resuelva cuando se necesiten los elementos referenciados. Esto reduce la latencia cuando el usuario hace clic en un enlace.
Strict-Transport-Security
Este encabezado informa a los navegadores que solo se debe acceder mediante HTTPS, en lugar de HTTP. Usando la configuración a continuación, todos los subdominios presentes y futuros usarán HTTPS durante un max-age
de 2 años. Esto bloquea el acceso a páginas o subdominios que solo se pueden servir mediante HTTP.
X-Frame-Options
Este encabezado indica si el sitio debe permitirse mostrar dentro de un iframe
. Esto puede prevenir ataques de clickjacking.
Este encabezado ha sido reemplazado por la opción frame-ancestors
de CSP, que tiene mejor soporte en navegadores modernos (consulte Política de Seguridad de Contenido para detalles de configuración).
Permissions-Policy (Política de Permisos)
Este encabezado permite controlar qué características y APIs pueden utilizarse en el navegador. Anteriormente se llamaba Feature-Policy
.
X-Content-Type-Options
Este encabezado evita que el navegador intente adivinar el tipo de contenido si el encabezado Content-Type
no está configurado explícitamente. Esto puede prevenir exploits XSS en sitios web que permiten a los usuarios subir y compartir archivos.
Por ejemplo, si un usuario intenta descargar una imagen pero esta es tratada como un tipo de Content-Type
diferente, como un ejecutable, lo cual podría ser malicioso. Este encabezado también aplica a la descarga de extensiones de navegador. El único valor válido para este encabezado es nosniff
.
Referrer-Policy (Política de Referencia)
Este encabezado controla cuánta información incluye el navegador al navegar desde el sitio web actual (origen) a otro.
Content-Security-Policy (Política de Seguridad de Contenido)
Obtenga más información sobre cómo agregar una Política de Seguridad de Contenido (Content Security Policy) a su aplicación.
Historial de Versiones
Versión | Cambios |
---|---|
v13.3.0 | Se agregó missing . |
v10.2.0 | Se agregó has . |
v9.5.0 | Se agregaron encabezados. |