Diferencia entre revisiones de «HTTP»

Contenido eliminado Contenido añadido
Línea 133:
 
===[[ HTTP Request Headers  (Encabezados de solicitud HTTP) ]]===
Ya hemos hablado sobre otras peticiones y los métodos HTTP GET y POST pero hay mas en un mensaje de solicitud HTTP que solo el método. Un mensaje de HTTP completo consiste de las siguientes partes:
 
[metodo]  [URL]  [versión]
 
[encabezados]
 
[cuerpo]
 
El mensaje siempre está en ASCII y la línea de inicio contiene el método, la URL y la versión HTTP (comúnmente 1.1, que ha existido desde 1999). Por último en la sección del cuerpo puede contener información como los datos de inicio de sesión de una cuenta como lo vimos en capítulos anteriores. Al cargar un archivo, la sección del cuerpo puede ser bastante grande.
 
En la parte central, en la cual vemos el Host: google.com  contiene uno o mas encabezados HTTP (recordemos que, en HTTP 1.1 el host es un encabezado requerido). En los encabezados podemos encontrar mucha información que nos va ser útil para procesar una petición. Por ejemplo, en el capítulo uno, habíamos hablado sobre representaciones de recursos y como el cliente y el servidor pueden negociar de la mejor manera (negociación de contenido). Acontinuaciòn veremos un ejemplo donde ilustramos cómo quedan los encabezados si el cliente quisiera ver un contenido en francés.
 
GET: <nowiki>https://www.google.com</nowiki> HTTP/1.1
 
Host: google.com
 
Accept-Language: fr-FR
 
Hay numerosos encabezados definidos en las especificaciones del HTTP. Algunos de estos pueden aparecer tanto en una solicitud como en una respuesta. El mejor ejemplo para representar este caso es el encabezado de la fecha. El cliente o el servidor pueden la fecha en la que se cró el mensaje.
 
GET: <nowiki>https://www.google.com</nowiki> HTTP/1.1
 
Host: google.com
 
Accept-Language: fr-FR
 
Date: Tue, 15 Nov 1994 08:12:31 GMT
 
Los encabezados no son obligatorios a excepción del de host que siempre debe aparecer, pero cuando se incluyen encabezados estos deben cumplir con los estándares establecidos , en el caso de la fecha dice que es un HTTP-date que debe estar en formato <nowiki>RFC 822</nowiki>
 
Acontinuaciòn veremos una tabla con los encabezados màs usados
{| class="wikitable"
|Encabezado
|Descripciòn
|Sintaxis
|Ejemplo
|-
|Referer
|Cuando el usuario hace clic en un enlace, el cliente puede enviar la URL de la página del remitente en esta cabecera.
|<nowiki>- Referer: <url></nowiki>
|Referer: <nowiki>https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referer</nowiki>
|-
|User-Agent
|Información sobre el usuario (el software) que realiza la solicitud. Muchos
 
aplicaciones utilizan la información contenida en esta cabecera, cuando está presente, por ejemplo para averiguar qué navegador está realizando la petición (Internet Explorer 6, Internet Explorer, Chrome, Firefox, etc.).
|<nowiki>- User-Agent: <producto> / <versión-producto> <comentario></nowiki>
 
<nowiki>*</nowiki>comentario puede no tener nada o tener más informaciòn de subproductos
|User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0
|-
|Accept
|Describe los tipos de contenidos que el usuario está dispuesto a aceptar. Esta cabecera es utilizado para la negociación de contenido.
|<nowiki>- Accept: <MIME_type>/<MIME_subtype></nowiki>
 
- Accept: <MIME_type>/*
 
- Accept: */*
|Accept: text/html, application/xhtml+xml, application/xml;q=0.9, */*;q=0.8
|-
|Acept-
 
Lenguage
|Dice cual es el lenguaje que el usuario prefiere.
|<nowiki>- Accept-Language: <lenguaje></nowiki>
 
- Accept-Language: <lugar>
 
- Accept-Language: *
|Accept-Language: fr-CH, fr;q=0.9, en;q=0.8, de;q=0.7, *;q=0.5
|-
|Cookie
|Contiene información de las cookies. (Se verà en el capítulo posterior) contiene información que generalmente ayuda al servidor a rastrear o identificar un usuario.
|<nowiki>- Cookie: <cookie-list></nowiki>
 
- Cookie: name=value
 
- Cookie: name=value; name2=value2; name3=value3
|Cookie: PHPSESSID=298zf09hf012fh2; csrftoken=u32t4o3tb3gg43; _gat=1;
|-
|if-Modified-
 
Since
|Contendrá la fecha de cuando el usuario realizó la última petición (en la memoria caché) del recurso. El servidor sólo tiene que enviar a todo el recurso si ha sido modificado desde entonces.
|<nowiki>- If-Modified-Since: <day-name>, <day> <month> <year> <hour>:<minute>:<second> GMT</nowiki>
|If-Modified-Since: Wed, 21 Oct 2015 07:28:00 GMT
|}
Cuando escribes una dirección URL en la barra de direcciones, el navegador envía una petición HTTP y puede verse así:
 
GET /tutorials/other/top-20-mysql-best-practices/ HTTP/1.1
 
Host: net.tutsplus.com
 
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5 (.NET CLR 3.5.30729)
 
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
 
Accept-Language: en-us,en;q=0.5
 
Accept-Encoding: gzip,deflate
 
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
 
Keep-Alive: 300
 
Connection: keep-alive
 
Cookie: PHPSESSID=r2t5uvjq435r4q7ib3vtdjq120
 
Pragma: no-cache
 
Cache-Control: no-cache
 
nótese la aparición de "q" en algunas de las cabeceras. El valor de q es siempre un número de
 
0 a 1 y representa el valor de la calidad o "grado relativo de preferencia" por un valor particular.
 
El valor por defecto es 1.0, y números más altos indican una mayor preferencia.
 
 
 
[[Formularios y Peticiones GET]]
[[Sobre los métodos y los recursos]]
[[Encabezados de Petición]]
 
===[[ The Response (la respuesta) ]]===