De Wikipedia, la enciclopedia libre
  (Redirigido desde la lista de encabezados HTTP )
Saltar a navegación Saltar a búsqueda

Los campos de encabezado HTTP son componentes de la sección de encabezado de los mensajes de solicitud y respuesta en el Protocolo de transferencia de hipertexto (HTTP). Definen los parámetros operativos de una transacción HTTP.

Formato general [ editar ]

Los campos de encabezado se transmiten después de la línea de solicitud (en el caso de un mensaje HTTP de solicitud) o 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 salto de línea (LF). El final de la sección de 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 tabulación horizontal (HT) como primer carácter en la línea siguiente. Este plegado ahora está en desuso. [1]

Nombres de campo [ editar ]

El Grupo de trabajo de ingeniería de Internet (IETF) estandariza un conjunto básico de campos en las RFC 7230, 7231, 7232, 7233, 7234 y 7235. La IANA mantiene el registro permanente de campos de encabezado y el repositorio de registros provisionales . Cada aplicación puede definir nombres de campo adicionales y valores permitidos.

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

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

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

Valores de campo [ editar ]

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

Muchos valores de campo pueden contener un par clave-valor de calidad ( q ) separados por un signo igual , que especifica un peso para usar en la negociación de contenido . [8] Por ejemplo, un navegador puede indicar que acepta información en alemán o inglés, prefiriendo el alemán al establecer el valor q en un valor desuperior al de en, de la siguiente manera:

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

Límites de tamaño [ editar ]

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 los 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 8.190 bytes, y puede haber como máximo 100 campos de encabezado en una sola solicitud. [9]

Solicitar campos [ editar ]

Campos de solicitud estándar [ editar ]

Campos de solicitud no estándar comunes [ editar ]

Campos de respuesta [ editar ]

Campos de respuesta estándar [ editar ]

Campos de respuesta comunes no estándar [ editar ]

Efectos de los campos seleccionados [ editar ]

Evitar el almacenamiento en caché [ editar ]

Si un servidor web responde con, Cache-Control: no-cacheentonces un navegador web u otro sistema de almacenamiento en caché (proxies intermedios) no debe usar la respuesta para satisfacer solicitudes posteriores sin verificar primero con el servidor de origen (este proceso se llama validación). Este campo de encabezado es parte de la versión 1.1 de HTTP y algunas cachés y navegadores lo ignoran. Puede simularse configurando elExpiresEl valor del campo de encabezado HTTP versión 1.0 a un tiempo anterior al tiempo de respuesta. Tenga en cuenta que no-cache no indica al navegador ni a los proxies si almacenar o no el contenido en caché. Simplemente le dice al navegador y a los proxies 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). El envío de un valor sin caché indica a un navegador o proxy que no utilice el contenido de la caché simplemente basándose 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 le indica al agente de usuario que el contenido está obsoleto y debe validarse antes de su uso.

El campo de encabezado Cache-Control: no-storeestá destinado a indicar a una aplicación de navegador que haga el mejor esfuerzo 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 de HTTP / 1.1 establece una distinción entre almacenes históricos y cachés. Si el usuario regresa a una página anterior, es posible que un navegador aún le muestre una página que se ha almacenado en el disco en la tienda de historial. Este es el comportamiento correcto de acuerdo con 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 su uso en solicitudes realizadas por el cliente. Es un medio para que el navegador le diga al servidor y a cualquier caché intermedio que quiere 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, solo se define para el encabezado de la solicitud. No se especifica su significado en un encabezado de respuesta. [68] 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, [69] la RFC HTTP / 1.1 advierte específicamente contra la confianza en este comportamiento.

Ver también [ editar ]

  • Inyección de encabezado HTTP
  • HTTP ETag
  • Lista de códigos de estado HTTP

Referencias [ editar ]

  1. ^ "Protocolo de transferencia de hipertexto (HTTP / 1.1): enrutamiento y sintaxis de mensajes" . ietf.org . Consultado el 23 de julio de 2014 .
  2. ^ RFC-7230 sección 3.2
  3. ^ RFC-7210 sección 3.1.1
  4. ^ RFC-7231 sección 4.1
  5. ^ Grupo de trabajo de ingeniería de Internet (1 de junio de 2012). "RFC 6648" . Consultado el 12 de noviembre de 2012 .
  6. ^ "Encabezados de mensajes" . Iana.org. 11 de junio de 2014 . Consultado el 12 de junio de 2014 .
  7. ^ "Protocolo de transferencia de hipertexto (HTTP / 1.1): enrutamiento y sintaxis de mensajes" . itef.org . Consultado el 24 de julio de 2014 .
  8. ^ "Protocolo de transferencia de hipertexto (HTTP / 1.1): semántica y contenido" . ietf.org . Consultado el 24 de julio de 2014 .
  9. ^ "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 .
  10. ^ a b c RFC 3229 . doi : 10.17487 / RFC3229 .
  11. ^ a b c "Uso compartido de recursos de origen cruzado" . Consultado el 24 de julio de 2017 .
  12. ^ a b "Protocolo de transferencia de hipertexto (HTTP / 1.1): enrutamiento y sintaxis de mensajes" . IETF . Junio ​​de 2014 . Consultado el 19 de diciembre de 2014 .
  13. ^ a b c d e f g h i "Protocolo de transferencia de hipertexto versión 2 (HTTP / 2)" . IETF . Mayo de 2015 . Consultado el 6 de junio de 2017 .
  14. ^ a b "Protocolo de transferencia de hipertexto (HTTP / 1.1): semántica y contenido" . Consultado el 3 de junio de 2015 .
  15. ^ "Extensión HTTP reenviada: Introducción" . IETF . Junio ​​de 2014 . Consultado el 7 de enero de 2016 .
  16. ^ "Protocolo de transferencia de hipertexto (HTTP / 1.1): enrutamiento y sintaxis de mensajes" . IETF . Junio ​​de 2014 . Consultado el 24 de julio de 2014 .
  17. ^ "Protocolo de transferencia de hipertexto versión 2 (HTTP / 2)" . IETF . Mayo de 2015 . Consultado el 6 de junio de 2017 .
  18. ^ "Encabezados de mensajes" . www.iana.org . Consultado el 26 de noviembre de 2018 .
  19. ^ "Protocolo de transferencia de hipertexto versión 2 (HTTP / 2)" . httpwg.org . 30 de mayo de 2015 . Consultado el 22 de febrero de 2019 .
  20. ^ "Actualizar solicitudes inseguras - Recomendación de candidato del W3C" . W3C . 8 de octubre de 2015 . Consultado el 14 de enero de 2016 .
  21. ^ https://www.stoutner.com/the-x-requested-with-header/
  22. ^ "Pruebe el encabezado HTTP" No rastrear " . Consultado el 31 de enero de 2011 .
  23. ^ "Protección de seguimiento web: estándares mínimos y oportunidades para innovar" . Consultado el 24 de marzo de 2011 .
  24. ^ IETF Do Not Track: una opción de exclusión de seguimiento web de terceros universal el 7 de marzo de 2011
  25. ^ Expresión de preferencia de seguimiento de W3C (DNT) , 26 de enero de 2012
  26. ^ Amos Jeffries (2 de julio de 2010). "SquidFaq / ConfiguringSquid - Wiki de proxy web de Squid" . Consultado el 10 de septiembre de 2009 .
  27. ^ La Fundación de software Apache. "mod_proxy - Apache HTTP Server versión 2.2" . Consultado el 12 de noviembre de 2014 .
  28. ^ 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 .
  29. ^ "Ayudando a la comunicación segura: cliente a servidor front-end" . 27 de julio de 2006 . Consultado el 23 de abril de 2012 .
  30. ^ "Especificación 2.5.1 del servidor OpenSocial Core API" . Consultado el 8 de octubre de 2014 .
  31. ^ "ID de dispositivo ATT" . Consultado el 14 de enero de 2012 .
  32. ^ "Perfil WAP" . Consultado el 14 de enero de 2012 .
  33. 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 .
  34. ^ "Verizon inyectando cookies permanentes para rastrear clientes móviles, evitando los controles de privacidad" . Fundación Frontera Electrónica . Consultado el 19 de enero de 2014 .
  35. ^ "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 .
  36. ^ Craig Timberg. "Verizon, AT&T rastrea a sus usuarios con 'supercookies ' " . The Washington Post . Consultado el 19 de enero de 2014 .
  37. ^ "Protección contra la falsificación de solicitudes entre sitios de SAP" . SAP SE . Consultado el 20 de enero de 2015 .
  38. ^ "Protección de falsificación de solicitud de Django Cross Site" . Django (marco web) . Archivado desde el original el 20 de enero de 2015 . Consultado el 20 de enero de 2015 .
  39. ^ "Protección de falsificación de solicitud de sitio cruzado angular (XSRF)" . AngularJS . Consultado el 20 de enero de 2015 .
  40. ^ a b "¿Qué es el encabezado http X-REQUEST-ID?" . stackoverflow.com . Consultado el 19 de mayo de 2016 .
  41. ^ "ID de solicitud HTTP" . devcenter.heroku.com . Consultado el 6 de febrero de 2018 .
  42. ^ "El valor de los ID de correlación" . Blog de Rapid7 . 23 de diciembre de 2016 . Consultado el 13 de abril de 2018 .
  43. ^ Hilton, Peter. "ID de correlación para arquitecturas de microservicios - Peter Hilton" . hilton.org.uk . Consultado el 13 de abril de 2018 .
  44. ^ "Guardar datos API Living Document Draft Community Group Report 2.1.1. Campo de encabezado de solicitud Save-Data" . Grupo Comunitario Incubadora de Plataformas Web . 30 de junio de 2020 . Consultado el 5 de marzo de 2021 .
  45. ^ "RFC 5789" . Consultado el 24 de diciembre de 2014 .
  46. ^ "Servicios alternativos HTTP" . IETF. Abril de 2016 . Consultado el 19 de abril de 2016 .
  47. ^ "Servicios alternativos HTTP, sección 3" . IETF. Abril de 2016 . Consultado el 8 de junio de 2017 .
  48. ^ "RFC 6266" . Consultado el 13 de marzo de 2015 .
  49. ^ "RFC 7231 - Protocolo de transferencia de hipertexto (HTTP / 1.1): semántica y contenido" . Tools.ietf.org . Consultado el 11 de diciembre de 2017 .
  50. ^ "Encabezados de fecha HTTP compatibles con RFC7231" .
  51. ^ Indique la versión canónica de una URL respondiendo con el encabezado HTTP Link rel = "canonical". Recuperado: 2012-02-09
  52. ^ Trabajo W3C P3P suspendido
  53. ^ "Extensión de fijación de clave pública para HTTP" . IETF . Consultado el 17 de abril de 2015 .
  54. ^ "Protocolo de transferencia de hipertexto (HTTP / 1.1): semántica y contenido" . Consultado el 24 de julio de 2014 .
  55. ^ "Opciones de marco X de campo de encabezado HTTP" . IETF. 2013 . Consultado el 12 de junio de 2014 .
  56. ^ "Nivel de política de seguridad de contenido 2" . Consultado el 2 de agosto de 2014 .
  57. ^ "Política de seguridad de contenido" . W3C. 2012 . Consultado el 28 de abril de 2017 .
  58. ^ "Protocolo de transferencia de hipertexto (HTTP / 1.1): enrutamiento y sintaxis de mensajes" . Consultado el 24 de julio de 2014 .
  59. ^ "Tiempo-Permitir-Origen" . Red de desarrolladores de Mozilla . Consultado el 25 de enero de 2018 .
  60. ^ "Configuración de servidores para medios Ogg" . 26 de mayo de 2014 . Consultado el 3 de enero de 2015 .
  61. ^ Eric Lawrence (3 de septiembre de 2008). "IE8 Security Part VI: Actualización Beta 2" . Consultado el 28 de septiembre de 2010 .
  62. ^ "Alojamiento - Extensiones de Google Chrome - Código de Google" . Consultado el 14 de junio de 2012 .
  63. van Kesteren, Anne (26 de agosto de 2016). "Obtener estándar" . WHATWG . Archivado desde el original el 26 de agosto de 2016 . Consultado el 26 de agosto de 2016 .
  64. ^ "¿Por qué ASP.NET framework agrega el encabezado HTTP 'X-Powered-By: ASP.NET' en las respuestas? - Stack Overflow" . Consultado el 30 de septiembre de 2010 .
  65. ^ "Definición de compatibilidad de documentos: especificar modos de compatibilidad de documentos" . 1 de abril de 2011 . Consultado el 24 de enero de 2012 .
  66. ^ "HTML Living Standard 4.2.5.3 directivas Pragma, estado compatible con X-UA" . WHATWG . 12 de marzo de 2021 . Consultado el 14 de marzo de 2021 . Para los meta elementos 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"
  67. ^ Eric Lawrence (2 de julio de 2008). "IE8 Security Part IV: El filtro XSS" . Consultado el 30 de septiembre de 2010 .
  68. ^ "Protocolo de transferencia de hipertexto (HTTP / 1.1): almacenamiento en caché" . ietf.org . Consultado el 24 de julio de 2014 .
  69. ^ "Cómo evitar el almacenamiento en caché en Internet Explorer" . Microsoft . 22 de septiembre de 2011 . Consultado el 15 de abril de 2015 .

Enlaces externos [ editar ]

  • Encabezados: nombres de campo de encabezado de mensaje permanente
  • RFC 6265: Mecanismo de gestión de estado HTTP IETF
  • RFC 7230: Protocolo de transferencia de hipertexto (HTTP / 1.1): Sintaxis y enrutamiento de mensajes
  • RFC 7231: Protocolo de transferencia de hipertexto (HTTP / 1.1): Semántica y contenido
  • RFC 7232: Protocolo de transferencia de hipertexto (HTTP / 1.1): solicitudes condicionales
  • RFC 7233: Protocolo de transferencia de hipertexto (HTTP / 1.1): Solicitudes de rango
  • RFC 7234: Protocolo de transferencia de hipertexto (HTTP / 1.1): Almacenamiento en caché
  • RFC 7235: Protocolo de transferencia de hipertexto (HTTP / 1.1): Autenticación
  • RFC 7239: Extensión HTTP reenviada
  • RFC 7240: Preferir encabezado para HTTP
  • Encabezados HTTP / 1.1 desde el punto de vista de un servidor web
  • Internet Explorer y encabezados HTTP personalizados - IEInternals de EricLaw - Página principal del sitio - Blogs de MSDN