2.1.1+HTTP

Procedimiento del navegador
La tarea del navegador Web es crear la petición a partir de los datos recogidos en el entorno de usuario de elementos del mismo, como enlaces , el valor del texto de la barra de búsqueda, los metatags. Al pulsar en el enlace, el navegador crea automáticamente la petición GET y las cabeceras de la petición en base a los metatags (cabeceras definidas), los cookies y cabeceras automáticas del navegador, para luego enviarlas junto a la petición al Servidor.
 * Entrar ||

Petición POST
Es el segundo tipo de petición HTTP más utilizado. Los datos a enviar al servidor se incluyen en el cuerpo de la misma petición con las cabeceras HTTP asignadas correspondientemente respecto al tipo de petición. Generalmente se asocia con los formularios web en el que los datos suelen ser cifrados para enviarlos de manera segura al servidor.

 Por motivos de convención se incluye en la petición la cabecera application/x-www-form-urlencoded que indica el formato o codificación de los datos a enviar; esta es //variable->valor // en el formato: variable=valor separada cada par variable->valor por &. Esta cabecera, en los formularios HTML se envía automáticamente, pero en otras tecnologías web tal como AJAX, si se desea hacer correctamente una petición POST debe ser especificado o instanciado el objeto: setRequestHeader("Content-type:application/x-www-form-urlencode"); ajax.send(data);

 Si se utilizase el método GET los datos deberían de ser añadidos a la URL, lo que los expondría a ser vistos de forma directa.

Estructura de una petición POST
Artículo principal: //<span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;">Cabeceras HTTP //<span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;">.


 * **<span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;">Estructura típica de una petición POST ** || **<span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;">Muestra ** ||
 * **<span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;">Petition type ** || <span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;">POST url HTTP/1.1 || <span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;">POST comment.php HTTP/1.1 ||
 * **<span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;">Referer ** || <span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;">http-url-referer || <span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;">index.php ||
 * **<span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;">Content-Length ** || <span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;">contentlenght-int || <span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;">63 ||
 * **<span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;">Origin ** || <span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;">http-url-origin || <span style="font-family: 'Arial','sans-serif'; font-size: 13.3333px;">[|http://es.wikipedia.org] ||
 * **<span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;">User-Agent ** || <span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;">useragent-string || <span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;">Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) ... ||
 * **<span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;">Content-Type ** || <span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;">content-type-string || <span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;">application/x-www-form-urlencoded ||
 * **<span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;">Accept ** || <span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;">mimetypes-accepted-string || <span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;">application/xml,application/xhtml+xml ... ||
 * **<span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;">Accept-Language ** || <span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;">language-accepted-string || <span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;">es-ES,es;q=0.8 ||
 * **<span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;">Accept-Charset ** || <span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;">charset-accepted-string || <span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;">ISO-8859-1,utf-8;q=0.7,*;q=0.3 ||
 * **<span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;">Cookie ** || <span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;">phpsessid-string || <span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;">PHPSESSID=gm0ugf96iojuldio8i51u92716 ||
 * **<span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;">Accept-Encoding ** || <span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;">accept-encoding-string || <span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;">gzip,deflate,sdch ||
 * **<span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;">Content ** || <span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;">Content-string || <span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;">&data=4&lang=es+es ||

<span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 17.3333px;">Composición de una petición POST
<span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;">Las cabeceras más comunes que se envían en una petición POST:


 * **<span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;">Petition type: **<span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;"> Especifica el tipo de petición <span class="mw-redirect" style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;">HTTP <span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;">. //<span style="font-family: 'Arial','sans-serif';">(Esta cabecera no tiene nombre, se envía tal cual) //
 * **<span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;">Referer: **<span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;"> Especifica la url desde la cual se hizo la petición POST.
 * **<span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;">Content-Length: **<span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;"> Especifica la longitud en bytes de los datos enviados en el cuerpo de la petición.
 * **<span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;">Origin: **<span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;"> Especifica la url principal del sitio.
 * **<span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;">User-Agent: **<span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;">Especifica el identificador del navegador Web desde el cual se hizo la petición.
 * **<span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;">Content-Type: **<span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;"> Especifica el formato o MIME de los datos enviados en el cuerpo de la petición.
 * **<span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;">Accept: **<span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;"> Especifica el MIME que se espera en la respuesta.
 * **<span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;">Accept-Language: **<span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;"> Especifica el código del lenguaje esperado en la respuesta.
 * **<span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;">Accept-Charset: **<span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;"> Especifica la codificación que se espera en la respuesta.
 * **<span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;">Cookie: **<span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;"> Especifica un identificador de sesión en la petición derivado de un cookie.
 * **<span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;">Accept-Encoding: **<span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;"> Especifica el tipo de codificación (generalmente compresión) que se espera de la respuesta. //<span style="font-family: 'Arial','sans-serif';">(No todos los navegadores envían esta cabecera) //

<span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 17.3333px;">Estructura de una respuesta POST
<span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 14px;">Artículo principal: //<span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;">Cabeceras HTTP //<span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;">.


 * **<span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;">Estructura típica de una respuesta POST ** || **<span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;">Muestra ** ||
 * **<span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;">HTTP version & state ** || <span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;">HTTP-version-state || <span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;">HTTP/1.1 200 OK ||
 * **<span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;">Date ** || <span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;">date-string || <span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;">Tue, 07 Jun 2011 05:52:31 GMT ||
 * **<span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;">Server ** || <span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;">server-string || <span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;">Apache/2.2.17 (Win32) mod_ssl/2.2.17... ||
 * **<span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;">Expires ** || <span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;">expire-date-string || <span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;">Thu, 19 Nov 1981 08:52:00 GMT ||
 * **<span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;">Cache-Control ** || <span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;">Cache-control-string || <span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;">no-store, no-cache, must-revalidate... ||
 * **<span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;">Pragma ** || <span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;">pragma-string || <span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;">no-cache ||
 * **<span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;">Content-Length ** || <span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;">Content-length-int || <span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;">297 ||
 * **<span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;">Content-Type ** || <span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;">Content-type-string || <span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;">text/html ||
 * **<span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;">Keep-Alive ** || <span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;">Keep-alive-string || <span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;">timeout=5, max=98 ||
 * **<span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;">Connection ** || <span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;">Connection-string || <span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;">Keep-Alive ||
 * **<span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;">X-Powered-By ** || <span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;">X-powered-by-string || <span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;">PHP/5.3.5 ||

<span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 17.3333px;">Codificación del mensaje del cuerpo de la petición
<span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;">Los datos que se envían en el cuerpo de la petición POST deben tener algún formato que permita manipularlos en un futuro procesamiento. Por ello la petición debe tener asignada la cabecera Content-Type cuyo valor será la codificación de los datos. De este modo el sistema podrá diferenciar entre variables aisladas, datos binarios, texto plano, o cualquier otro tipo de formato. El formato de una cadena de datos se denomina MIME y es el valor que deberá ser incluido en esta cabecera.

<span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;">En HTML la cabecera Content-Type se especifica automáticamente y su valor es //<span style="font-family: 'Arial','sans-serif';">application/x-www-form-urlencoded //, no obstante pueden especificarse por estándar otros dos valores: multipart/form-data y text/plain utilizando el atributo enctype del elemento form de la siguiente manera <span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;">O cualquier otro valor MIME. El multipart/form-data se utiliza para enviar grandes cadenas binarias que suponen cualquier otro tipo de documento que no sea texto plano, como imágenes, vídeos o ejecutables. Para varios valores, separar por comas.
 * <span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;"><form enctype="multipart/form-data">... ||
 * <span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;"><form enctype="text/plain">... ||
 * <span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;"><form enctype="application/x-www-form-urlencoded">... ||

<span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;">El application/x-www-form-urlencoded codifica de forma automática los valores de todos los elementos del formulario del modo variable=valor, separados por &. El atributo name de un input suele ser el nombre de la variable y su value el valor. Los espacios se reemplazan por + y los caracteres no alfanuméricos por $HH donde HH representa el número hexadecimal del carácter ASCII. <span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;">que representado de otra forma es:
 * <span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;">id=valor+de+la+variable&tama%A4o=4 ||
 * <span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;">id: valor de la variable

<span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;"> tamaño: 4 ||

<span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 17.3333px;">Procedimiento del navegador
<span style="color: #000000; font-family: 'Arial','sans-serif'; font-size: 13.3333px;">El navegador recopila la información del formulario para crear la petición y enviarla. Las cabeceras las envía junto a la petición POST, y se recopilan en base a los metatags definidos en el código, los automáticos del navegador y los Cookies. Es el navegador, también, el que codifica los datos si es necesario.