stringtranslate.com

Lista de campos de encabezado HTTP

Los campos de encabezado HTTP son una lista de cadenas enviadas y recibidas tanto por el programa cliente como por el servidor en cada solicitud y respuesta HTTP. Estos encabezados suelen ser invisibles para el usuario final y solo el servidor y las aplicaciones cliente los procesan o registran . Definen cómo se codifica la información enviada/recibida a través de la conexión (como en Content-Encoding ), la verificación de la sesión y la identificación del cliente (como en las cookies del navegador , dirección IP, user-agent ) o su anonimato (VPN o enmascaramiento de proxy). , suplantación de agente de usuario), cómo el servidor debe manejar los datos (como en Do-Not-Track ), la antigüedad (el tiempo que ha residido en un caché compartido ) del documento que se está descargando, entre otros.

formato general

En la versión 1.x de HTTP, los campos de encabezado se transmiten después de la línea de solicitud (en el caso de un mensaje HTTP de solicitud) o de la línea de respuesta (en el caso de un mensaje HTTP de respuesta), que es la primera línea de un mensaje. Los campos de encabezado son pares clave-valor separados por dos puntos en formato de cadena de texto sin cifrar , terminados por una secuencia de caracteres de retorno de carro (CR) y avance de línea (LF). El final de la sección del encabezado se indica mediante una línea de campo vacía, lo que da como resultado la transmisión de dos pares CR-LF consecutivos. En el pasado, las líneas largas se podían doblar en varias líneas; Las líneas de continuación se indican mediante la presencia de un espacio (SP) o una tabulación horizontal (HT) como primer carácter en la línea siguiente. Este plegado quedó obsoleto en RFC 7230. [1]

HTTP/2 [2] y HTTP/3 en su lugar utilizan un protocolo binario , donde los encabezados se codifican en un solo marco HEADERSy cero o más CONTINUATIONusando HPACK [3] (HTTP/2) o QPACK (HTTP/3), que proporcionan servicios eficientes. compresión del encabezado. La línea de solicitud o respuesta de HTTP/1 también ha sido reemplazada por varios campos de pseudoencabezado, cada uno de los cuales comienza con dos puntos ( :).

Nombres de campo

El Grupo de Trabajo de Ingeniería de Internet (IETF) estandariza un conjunto básico de campos en RFC 9110 y 9111. La IANA  mantiene los nombres de campo, los campos de encabezado y el repositorio de registros provisionales . Cada aplicación puede definir nombres de campos adicionales y valores permitidos.

Los nombres de los campos de encabezado no distinguen entre mayúsculas y minúsculas. [4] Esto contrasta con los nombres de métodos HTTP (GET, POST, etc.), que distinguen entre mayúsculas y minúsculas. [5]

HTTP/2 impone algunas restricciones en campos de encabezado específicos (ver más abajo).

Los campos de encabezado no estándar se marcaban convencionalmente anteponiendo el nombre del campo, X-pero esta convención quedó obsoleta en junio de 2012 debido a los inconvenientes que causó cuando los campos no estándar se convirtieron en estándar. [6]Downgraded- En marzo de 2013 se levantó una restricción anterior sobre el uso de. [7]

Valores de campo

Algunos campos pueden contener comentarios (es decir, en los campos User-Agent, Server, Via), que el software puede ignorar. [8]

Muchos valores de campo pueden contener un par clave-valor de calidad ( q ) separado por un signo igual , especificando un peso a usar en la negociación de contenido . [9] Por ejemplo, un navegador puede indicar que acepta información en alemán o inglés, siendo el alemán el preferido estableciendo el valor qde superior al de en, de la siguiente manera:

Accept-Language: de; q=1.0, en; q=0.5

Límites de tamaño

El estándar no impone límites al tamaño de cada nombre o valor de campo de encabezado, ni al número de campos. Sin embargo, la mayoría de servidores, clientes y software proxy imponen algunos límites por razones prácticas y de seguridad. Por ejemplo, el servidor Apache 2.3 limita de forma predeterminada el tamaño de cada campo a 8190 bytes y puede haber como máximo 100 campos de encabezado en una sola solicitud. [10]

Campos de solicitud

Campos de solicitud estándar

Campos de solicitud no estándar comunes

Campos de respuesta

Campos de respuesta estándar

Campos de respuesta no estándar comunes

Efectos de los campos seleccionados

Evitar el almacenamiento en caché

Si un servidor web responde, Cache-Control: no-cacheun navegador web u otro sistema de almacenamiento en caché (proxies intermedios) no debe utilizar la respuesta para satisfacer solicitudes posteriores sin consultar primero con el servidor de origen (este proceso se llama validación). Este campo de encabezado es parte de HTTP versión 1.1 y algunos cachés y navegadores lo ignoran. Se puede simular configurando el Expiresvalor del campo de encabezado HTTP versión 1.0 en un tiempo anterior al tiempo de respuesta. Tenga en cuenta que no-cache no indica al navegador ni a los servidores proxy si deben almacenar en caché o no el contenido. Simplemente le dice al navegador y a los servidores proxy que validen el contenido de la caché con el servidor antes de usarlo (esto se hace usando los atributos If-Modified-Since, If-Unmodified-Since, If-Match, If-None-Match mencionados anteriormente). Por lo tanto, enviar un valor sin caché indica a un navegador o proxy que no utilice el contenido de la caché basándose simplemente en "criterios de actualización" del contenido de la caché. Otra forma común de evitar que se muestre contenido antiguo al usuario sin validación es Cache-Control: max-age=0. Esto indica al agente de usuario que el contenido está obsoleto y debe validarse antes de su uso.

El campo de encabezado Cache-Control: no-storetiene como objetivo indicar a una aplicación de navegador que haga lo mejor que pueda para no escribirlo en el disco (es decir, no almacenarlo en caché).

La solicitud de que un recurso no se almacene en caché no garantiza que no se escriba en el disco. En particular, la definición HTTP/1.1 establece una distinción entre almacenes de historial y cachés. Si el usuario regresa a una página anterior, es posible que el navegador aún le muestre una página que se ha almacenado en el disco en el almacén del historial. Este es el comportamiento correcto según la especificación. Muchos agentes de usuario muestran un comportamiento diferente al cargar páginas desde el almacén de historial o la caché dependiendo de si el protocolo es HTTP o HTTPS.

El Cache-Control: no-cachecampo de encabezado HTTP/1.1 también está diseñado para usarse en solicitudes realizadas por el cliente. Es un medio para que el navegador le indique al servidor y a las cachés intermedias que desea una versión nueva del recurso. El Pragma: no-cachecampo de encabezado, definido en la especificación HTTP/1.0, tiene el mismo propósito. Sin embargo, sólo está definido para el encabezado de la solicitud. No se especifica su significado en el encabezado de una respuesta. [76] El comportamiento de Pragma: no-cacheen una respuesta es específico de la implementación. Si bien algunos agentes de usuario prestan atención a este campo en las respuestas, [77] el RFC HTTP/1.1 advierte específicamente contra confiar en este comportamiento.

Ver también

Referencias

  1. ^ "Análisis de campo". Protocolo de transferencia de hipertexto (HTTP/1.1): sintaxis y enrutamiento de mensajes. Junio ​​de 2014. seg. 3.2.4. doi : 10.17487/RFC7230 . RFC 7230.
  2. ^ HTTP/2. Junio ​​de 2022. doi : 10.17487/RFC9113 . RFC 9113.
  3. ^ Peón, R.; Ruellan, H. (mayo de 2015). "HPACK: Compresión de encabezado para HTTP/2". IETF . doi : 10.17487/RFC7541 . Consultado el 13 de diciembre de 2021 . {{cite journal}}: Citar diario requiere |journal=( ayuda )
  4. ^ "Nombres de campos". Semántica HTTP. Junio ​​de 2022. seg. 5.1. doi : 10.17487/RFC9110 . RFC 9110.
  5. ^ "Métodos: descripción general". Semántica HTTP. Junio ​​de 2022. seg. 9.1. doi : 10.17487/RFC9110 . RFC 9110.
  6. ^ Grupo de trabajo de ingeniería de Internet (1 de junio de 2012). "RFC 6648". doi : 10.17487/RFC6648 . Consultado el 12 de noviembre de 2012 . {{cite journal}}: Citar diario requiere |journal=( ayuda )
  7. ^ "Encabezados de mensajes". Iana.org. 11 de junio de 2014 . Consultado el 12 de junio de 2014 .
  8. ^ "Comentarios". Semántica HTTP. Junio ​​de 2022. seg. 5.6.5. doi : 10.17487/RFC9110 . RFC 9110.
  9. ^ "Valores de calidad". Semántica HTTP. Junio ​​de 2022. seg. 12.4.2. doi : 10.17487/RFC9110 . RFC 9110.
  10. ^ "núcleo: servidor HTTP Apache". Httpd.apache.org. Archivado desde el original el 9 de mayo de 2012 . Consultado el 13 de marzo de 2012 .
  11. ^ abc RFC 3229. doi : 10.17487/RFC3229 .
  12. ^ abc "Compartir recursos entre orígenes" . Consultado el 24 de julio de 2017 .
  13. ^ ab "Encabezado de conexión". Semántica HTTP. Junio ​​de 2022. seg. 7.6.1. doi : 10.17487/RFC9110 . RFC 9110.
  14. ^ abcdefghi "Campos de encabezado específicos de la conexión". HTTP/2. Junio ​​de 2022. seg. 8.2.2. doi : 10.17487/RFC9113 . RFC 9113.
  15. ^ ab "Cambios desde RFC 2616". Protocolo de Transferencia de Hipertexto (HTTP/1.1): Semántica y Contenido. Junio ​​de 2014. seg. B.doi : 10.17487 /RFC7231 . RFC 7231.
  16. ^ Petersson, A.; Nilsson, M. (junio de 2014). "Extensión HTTP reenviada: Introducción". IETF . doi : 10.17487/RFC7239 . Consultado el 7 de enero de 2016 . {{cite journal}}: Citar diario requiere |journal=( ayuda )
  17. ^ "Anfitrión y: autoridad". Semántica HTTP. Junio ​​de 2022. seg. 7.2. doi : 10.17487/RFC9110 . RFC 9110.
  18. ^ "Solicitar campos de pseudoencabezado". HTTP/2. Junio ​​de 2022. seg. 8.3.1. doi : 10.17487/RFC9113 . RFC 9113.
  19. ^ "Encabezados de mensajes". www.iana.org . Consultado el 26 de noviembre de 2018 .
  20. ^ "Campo de encabezado de configuración HTTP2". Protocolo de transferencia de hipertexto versión 2 (HTTP/2). segundo. 3.2.1. doi : 10.17487/RFC7540 . RFC 7540.
  21. ^ ab "Encabezado de advertencia". Almacenamiento en caché HTTP. Junio ​​de 2022. seg. 5.5. doi : 10.17487/RFC9111 . RFC 9111.
  22. ^ "Solicitudes de actualización inseguras: recomendación del candidato del W3C". W3C . 8 de octubre de 2015 . Consultado el 14 de enero de 2016 .
  23. ^ "El encabezado" X-Requested-With "- Stoutner".
  24. ^ "Pruebe el encabezado HTTP" No rastrear "" . Consultado el 31 de enero de 2011 .
  25. ^ "Protección de seguimiento web: estándares mínimos y oportunidades para innovar" . Consultado el 24 de marzo de 2011 .
  26. ^ IETF Do Not Track: opción de exclusión voluntaria del seguimiento web universal de terceros 7 de marzo de 2011
  27. ^ Expresión de preferencia de seguimiento (DNT) del W3C, 26 de enero de 2012
  28. ^ Amos Jeffries (2 de julio de 2010). "SquidFaq/ConfiguringSquid - Wiki de proxy web de Squid" . Consultado el 10 de septiembre de 2009 .
  29. ^ La Fundación de Software Apache. "mod_proxy - Servidor HTTP Apache versión 2.2" . Consultado el 12 de noviembre de 2014 .
  30. ^ Dave Steinberg (10 de abril de 2007). "¿Cómo ajusto mi sitio SSL para que funcione con el balanceador de carga de GeekISP?" . Consultado el 30 de septiembre de 2010 .
  31. ^ "Ayudando a proteger la comunicación: de cliente a servidor front-end". 27 de julio de 2006 . Consultado el 23 de abril de 2012 .
  32. ^ "Especificación 2.5.1 del servidor OpenSocial Core API" . Consultado el 8 de octubre de 2014 .
  33. ^ "ID de dispositivo ATT". Archivado desde el original el 16 de febrero de 2012 . Consultado el 14 de enero de 2012 .
  34. ^ "Perfil WAP" . Consultado el 14 de enero de 2012 .
  35. ^ de Boyne Pollard, Jonathan (2007). "El encabezado Proxy-Connection: es un error en la forma en que algunos navegadores web usan HTTP" . Consultado el 16 de enero de 2018 .
  36. ^ "Verizon inyecta cookies permanentes para rastrear clientes móviles, evitando los controles de privacidad". Fundación Frontera Electrónica . Consultado el 19 de enero de 2014 .
  37. ^ "Comprobación de balizas de identificación única conocidas de AT&T, Verizon, Sprint, Bell Canada y Vodacom" . Consultado el 19 de enero de 2014 .
  38. ^ Craig Timberg. "Verizon y AT&T rastrean a sus usuarios con 'supercookies'". El Washington Post . Consultado el 19 de enero de 2014 .
  39. ^ "Protección contra falsificación de solicitudes entre sitios de SAP". SAP SE . Consultado el 20 de enero de 2015 .
  40. ^ "Protección contra falsificación de solicitudes entre sitios de Django". Django (marco web) . Archivado desde el original el 20 de enero de 2015 . Consultado el 20 de enero de 2015 .
  41. ^ "Protección contra falsificación de solicitudes de sitios cruzados angulares (XSRF)". AngularJS . Consultado el 20 de enero de 2015 .
  42. ^ "ID de solicitud HTTP". devcenter.heroku.com . Consultado el 22 de marzo de 2022 .
  43. ^ "El valor de las identificaciones de correlación". Blog de Rapid7 . 23 de diciembre de 2016 . Consultado el 13 de abril de 2018 .
  44. ^ Hilton, Peter. "ID de correlación para arquitecturas de microservicios: Peter Hilton". hilton.org.uk . Consultado el 13 de abril de 2018 .
  45. ^ "Informe preliminar del grupo comunitario 2.1.1 del borrador del documento vivo de la API de datos guardados. Campo de encabezado de solicitud de datos guardados". Grupo comunitario de incubadora de plataformas web . 30 de junio de 2020 . Consultado el 5 de marzo de 2021 .
  46. ^ Colaboradores de MDN (3 de marzo de 2023). "Sec-GPC". Documentos web de MDN . Consultado el 12 de marzo de 2023 .
  47. ^ Dusseault, L.; Snell, J. (2010). "RFC 5789". doi :10.17487/RFC5789. S2CID  42062521 . Consultado el 24 de diciembre de 2014 . {{cite journal}}: Citar diario requiere |journal=( ayuda )
  48. ^ Nottingham, M.; McManus, P.; Reschke, J. (abril de 2016). "Servicios alternativos HTTP". IETF. doi : 10.17487/RFC7838 . Consultado el 19 de abril de 2016 . {{cite journal}}: Citar diario requiere |journal=( ayuda )
  49. ^ Nottingham, M.; McManus, P.; Reschke, J. (abril de 2016). "Servicios alternativos HTTP, sección 3". IETF. doi : 10.17487/RFC7838 . Consultado el 8 de junio de 2017 . {{cite journal}}: Citar diario requiere |journal=( ayuda )
  50. ^ Reschke, J. (2011). "RFC 6266". doi : 10.17487/RFC6266 . Consultado el 13 de marzo de 2015 . {{cite journal}}: Citar diario requiere |journal=( ayuda )
  51. ^ "Contenido-Idioma". Semántica HTTP. Junio ​​de 2022. seg. 8.5. doi : 10.17487/RFC9110 . RFC 9110.
  52. ^ Indique la versión canónica de una URL respondiendo con el encabezado HTTP Link rel="canonical" Consultado el 9 de febrero de 2012.
  53. ^ Trabajo W3C P3P suspendido
  54. ^ "Extensión de fijación de clave pública para HTTP". IETF . Consultado el 17 de abril de 2015 .
  55. ^ "Reintentar después". Semántica HTTP. Junio ​​de 2022. seg. 10.2.3. doi : 10.17487/RFC9110 . RFC 9110.
  56. ^ Ross, D.; Gondrom, T. (2013). "Opciones de marco X del campo de encabezado HTTP". IETF. doi : 10.17487/RFC7034 . Consultado el 12 de junio de 2014 . {{cite journal}}: Citar diario requiere |journal=( ayuda )
  57. ^ "Política de seguridad de contenido nivel 2" . Consultado el 2 de agosto de 2014 .
  58. ^ "Política de seguridad de contenidos". W3C. 2012 . Consultado el 28 de abril de 2017 .
  59. ^ "Esperar-CT". Red de desarrolladores de Mozilla . Consultado el 23 de julio de 2021 .
  60. ^ "NEL". Red de desarrolladores de Mozilla . 2021 . Consultado el 18 de mayo de 2021 .
  61. ^ "Política de permisos". W3C. 2020 . Consultado el 1 de mayo de 2021 .
  62. ^ "¿Estoy FLoCed?". EFF. 2021 . Consultado el 1 de mayo de 2021 .
  63. ^ "Defina el encabezado de actualización HTTP mediante annevk · Solicitud de extracción n.° 2892 · whatwg/html". GitHub . 9 de agosto de 2017 . Consultado el 17 de abril de 2021 .
  64. ^ "CSP: informar a". Red de desarrolladores de Mozilla . 2021 . Consultado el 18 de mayo de 2021 .
  65. ^ RFC 9110: Semántica HTTP
  66. ^ "Tiempo-permitir-origen". Red de desarrolladores de Mozilla . Consultado el 25 de enero de 2018 .
  67. ^ "Configuración de servidores para medios Ogg". 26 de mayo de 2014 . Consultado el 3 de enero de 2015 .
  68. ^ "Limpiar el seguimiento de la duración y utilizar la duplicación para el acceso entre subprocesos". Bugzilla@Mozilla . Consultado el 9 de febrero de 2024 .
  69. ^ Eric Lawrence (3 de septiembre de 2008). "Seguridad de IE8 Parte VI: Actualización Beta 2" . Consultado el 28 de septiembre de 2010 .
  70. ^ "Alojamiento - Extensiones de Google Chrome - Código de Google" . Consultado el 14 de junio de 2012 .
  71. ^ van Kesteren, Anne (26 de agosto de 2016). "Buscar estándar". QUÉ WG . Archivado desde el original el 26 de agosto de 2016 . Consultado el 26 de agosto de 2016 .
  72. ^ "Encabezado de respuesta HTTP X-Redirect-By" . Consultado el 29 de mayo de 2021 .
  73. ^ "Definición de compatibilidad de documentos: especificación de modos de compatibilidad de documentos". 1 de abril de 2011 . Consultado el 24 de enero de 2012 .
  74. ^ "Directivas HTML Living Standard 4.2.5.3 Pragma, estado compatible con X-UA". QUÉ WG . 12 de marzo de 2021 . Consultado el 14 de marzo de 2021 . Para metaelementos con un atributo http-equiv en el estado Compatible con X-UA, el atributo de contenido debe tener un valor que sea una coincidencia ASCII que no distinga entre mayúsculas y minúsculas para la cadena ."IE=edge"
  75. ^ Eric Lawrence (2 de julio de 2008). "Seguridad de IE8 Parte IV: El filtro XSS" . Consultado el 30 de septiembre de 2010 .
  76. ^ "Pragma". Almacenamiento en caché HTTP. Junio ​​de 2022. seg. 5.4. doi : 10.17487/RFC9111 . RFC 9111.
  77. ^ "Cómo evitar el almacenamiento en caché en Internet Explorer". Microsoft . 22 de septiembre de 2011 . Consultado el 15 de abril de 2015 .

A partir de esta edición, este artículo utiliza contenido de "¿Qué es el encabezado http X-REQUEST-ID?" , escrito por Stefan Kögl en Stack Exchange, que tiene una licencia que permite la reutilización bajo la licencia Creative Commons Attribution-ShareAlike 3.0 Unported , pero no bajo la GFDL . Se deben seguir todos los términos relevantes.

  1. ^ ab "¿Qué es el encabezado http X-REQUEST-ID?" . Consultado el 20 de marzo de 2022 .

A partir de esta edición, este artículo utiliza contenido de "¿Por qué el marco ASP.NET agrega el encabezado HTTP 'X-Powered-By:ASP.NET' en las respuestas?" , escrito por Adrian Grigore en Stack Exchange, cuya licencia permite la reutilización bajo la licencia Creative Commons Attribution-ShareAlike 3.0 Unported , pero no bajo la GFDL . Se deben seguir todos los términos relevantes.

  1. ^ "¿Por qué el marco ASP.NET agrega el encabezado HTTP 'X-Powered-By:ASP.NET' en las respuestas? - Desbordamiento de pila" . Consultado el 20 de marzo de 2022 .

enlaces externos