Menú
Está libre
registro
hogar  /  Multimedia/ ¿Qué es la transferencia de datos usando el método get? Atributo y método de acción

¿Qué es la transferencia de datos del método get. Atributo y método de acción

Hay dos conceptos comunes a casi todos los programas: procesar datos de entrada y generar resultados. En esta página, nos centraremos en manejar la entrada de programas CGI. Primero, de dónde proviene la entrada y, segundo, cómo se pasa la entrada al servidor. Para escribir programas CGI efectivos, debe tener una comprensión clara de estas cosas.

Un poco sobre HTTP

El servidor acepta tres tipos de solicitudes: GET, POST y HEAD. La solicitud del programa al servidor web se ve así:

OBTENER /index.html HTTP / 1.0

La primera parte, en este caso GET, es el método de solicitud, la segunda, index.html, es la URL solicitada y la tercera, HTTP / 1.0, es el protocolo utilizado por el cliente.

Los dos métodos de solicitud principales son GET y POST. Estos son los mismos métodos que están disponibles para usted al crear un formulario. El navegador rara vez utiliza el método HEAD porque solo solicita el encabezado de respuesta y, en este caso, el cuerpo de la respuesta no se envía. Por ejemplo, para comprobar si la página ha cambiado, el navegador puede solicitar un encabezado, pero esto no genera una comunicación completa.

Método GET

De forma predeterminada, la solicitud utiliza el método GET. El método POST solo se utiliza cuando se especifica explícitamente en la solicitud del formulario. Es muy importante que un programador CGI comprenda que cuando se realiza una solicitud GET, los datos del formulario se envían al servidor junto con la URL. Los servidores web que admiten CGI copian estos datos en Variable ambiental llamado QUERY_STRING. Después de eso, el programa CGI es responsable de obtener los datos de la variable de entorno y procesarlos.

La URL con la cadena de consulta se ve así:

Http://www.domen-name.com/login.pl?nick=maks&psw=parol

¿Firmar? separa la cadena de consulta de la URL real del recurso; nick y psw son variables que se pasan al servidor, maks y parol son sus valores, respectivamente.

Método POST

El método POST se utiliza cuando se especifica explícitamente en el atributo METHOD del formulario. A diferencia del método GET, POST no coloca datos en la URL, sino en el cuerpo de la solicitud. Una solicitud POST se parece mucho a una respuesta HTTP. La primera línea es una solicitud HTTP estándar que especifica el método POST. Puede contener los encabezados adicionales necesarios, separados del cuerpo de la solicitud por una línea vacía.

Cuando se usa el método POST, el cuerpo de la solicitud se pasa al programa como entrada estándar.

Elegir entre GET y POST

Está claro que al desarrollar formularios, un programador CGI se enfrentará a la cuestión de cuál de estos métodos utilizar. En la mayoría de los casos, ambos métodos son aplicables y ambos funcionarán bien. Sin embargo, hay situaciones en las que el uso de uno u otro método aporta ciertas ventajas.

Veamos algunas situaciones en las que tiene sentido preferir el método GET o POST.

  • Si desea que su programa sea llamado por referencia, debe preferir el método GET.
  • Si no desea que los argumentos pasados ​​a su programa se escriban en el archivo de registro del servidor, utilice el método POST. Por ejemplo, si un formulario requiere un nombre de usuario y una contraseña, probablemente no desee que los nombres y las contraseñas se guarden en el archivo del informe. Además, no es aconsejable pasar la contraseña como parte de la URL.
  • Si su formulario tiene dimensiones significativas, por ejemplo, tiene cuadros de texto con notas y comentarios, debe usar el método POST. En términos generales, también puede usar el método GET en este caso, pero luego puede encontrar restricciones de tamaño de URL que son diferentes para diferentes sistemas operativos y navegadores (limitados por el tamaño de las variables de entorno). Es más fácil utilizar el método POST.
  • Si su formulario contiene un campo de archivo, use el método POST. Además, en este caso, debe establecer el valor del atributo ENCTYPE en multipart / form-data.

OBTENER métodos y POST a HTTP y HTTPS son dos de los métodos más populares utilizados para transferir datos de un cliente a un servidor mediante el protocolo HTTP (Protocolo de transferencia de hipertexto). Tanto GET como POST se pueden usar para enviar una solicitud y recibir una respuesta, pero existe una diferencia significativa entre los dos.

La diferencia entre las solicitudes GET y POST en HTTP o HTTPS es una pregunta popular en todas las entrevistas de programación web. Dado que HTML es independiente de la tecnología de servidor web como Java, ASP o PHP y HTTP es el protocolo principal en el espacio de Internet, la importancia de comprender los métodos GET y POST no puede ignorarse claramente. En este artículo, veremos qué es un método HTTP GET, qué es un método HTTP POST, cuándo usar una solicitud en particular y cuál es la diferencia entre ellos. Analicemos cada concepto por separado.

¿Qué es HTML?

HTML es el lenguaje utilizado para crear páginas web. El hipertexto se refiere a los hipervínculos que puede contener una página HTML. El lenguaje de marcado se refiere a la forma en que se utilizan las etiquetas para definir el diseño de la página y los elementos de la página.
abajo esta el Ejemplo HTML que se utiliza para definir una página web básica con un encabezado y un párrafo de texto:



<Голова>
<Название>TechTerms.com

<Тело>

Este es un ejemplo de un párrafo en HTML.

La primera línea define el tipo de contenido que contiene el documento., y que están todos incluidos en el ejemplo anterior. El título de la página, los metadatos y los enlaces de archivos de anclaje se colocan entre las etiquetas. El contenido real de la página está entre las etiquetas. .

La web ha experimentado muchos cambios en las últimas décadas, pero HTML siempre ha sido el lenguaje principal utilizado para desarrollar páginas web. Curiosamente, mientras que los sitios web se han vuelto más avanzados e interactivos, HTML se ha vuelto más simple. Si compara el código fuente de una página HTML5 con una página similar escrita en HTML 4.01 o XHTML 1.0, habrá menos código en la página HTML5. Esto se debe a que el HTML moderno se basa en hojas de estilo en cascada o JavaScript para formatear casi todos los elementos de una página.

Muchos sitios web dinámicos generan páginas web sobre la marcha utilizando un lenguaje de programación del lado del servidor como PHP o ASP. Sin embargo, incluso las páginas dinámicas deben formatearse con HTML. Por lo tanto, los lenguajes de secuencias de comandos suelen generar HTML que se envía al navegador web.

El protocolo de transferencia de hipertexto HTTP está diseñado para la comunicación entre clientes y servidores y funciona como un protocolo de solicitud-respuesta.

El navegador web puede ser el cliente y la aplicación en la computadora que aloja el sitio web puede ser el servidor.

El cliente (navegador) envía una solicitud HTTP al servidor, el servidor devuelve una respuesta que contiene información sobre el estado de la solicitud y también puede contener el contenido solicitado.

Dos métodos de solicitud GET y POST

Dos métodos de uso común para solicitud-respuesta entre cliente y servidor:

    GET: solicita datos del recurso especificado;

    POST: envía datos para su procesamiento al recurso especificado.

Traducir GET y POST significa literalmente obtener y posprocesar.

Más acerca de HTTP

HTTP es el protocolo utilizado para transferir datos a través de Internet. Es parte del paquete de Protocolo de Internet y define los comandos y servicios utilizados para transferir datos de páginas web.

HTTP usa el modelo servidor-cliente. El cliente puede ser una computadora doméstica, portátil o dispositivo móvil... El servidor HTTP suele ser un servidor web con software servidor web como Apache o IIS. Cuando un usuario accede a un sitio web, el navegador envía una solicitud al servidor web correspondiente y responde con un código de estado HTTP. Si la URL es válida y se proporciona la conexión, el servidor enviará la página web y los archivos asociados al navegador.

Los códigos de estado HTTP comunes incluyen:

    200 - solicitud exitosa (la página web existe);

    301: se mueve constantemente (a menudo redirige a una nueva URL);

    401 - solicitud no autorizada (se requiere autorización);

    500 — Error interno servidor (a menudo llamado mala configuración servidor).

POST y GET en HTTP

HTTP define los comandos GET y POST que se utilizan para procesar envíos de formularios en sitios web. El comando CONNECT se utiliza para facilitar una conexión segura cifrada mediante SSL. Las conexiones HTTP cifradas se realizan a través de HTTPS, una extensión HTTP diseñada para transferencias de datos seguras.

Las URL que comienzan con "http: //" son accesibles a través de protocolos de transferencia de hipertexto estándar y utilizan el puerto 80 de forma predeterminada. Las URL que comienzan con "https: //" son accesibles a través de Conexión HTTPS y a menudo usan el puerto 443.

CORREO

POST es una serie controles del sistema ejecutado por computadoras y otros dispositivos electrónicos cuando están encendidos. Los resultados de la prueba pueden mostrarse en la pantalla, mostrarse mediante LED parpadeantes o simplemente registrarse internamente. V sistemas informáticos la operación POST se realiza al comienzo de la secuencia de inicio. Si todas las pruebas pasan, el resto del proceso de inicio continuará automáticamente.

Los sistemas operativos Mac y Windows ejecutan POST cada vez que la computadora arranca o se reinicia. Verificaciones de escaneo Hardware y garantiza que el procesador, la RAM y los dispositivos de almacenamiento funcionen correctamente. Si se produce un error durante la POST, el proceso de inicio puede pausarse o detenerse por completo, y el monitor puede mostrar un mensaje que indica que los errores de la POST a menudo se muestran en la pantalla de información del BIOS. Se pueden generar como códigos criptográficos como "08" o como un mensaje del sistema como "Error de memoria del sistema en el desplazamiento". En Mac, los errores de POST a menudo se indican mediante gráficos simples, como un icono de carpeta rota que indica que no se encontró ningún dispositivo de arranque.

Manifestaciones fisicas

En algunos casos, es posible que la pantalla de la computadora ni siquiera se encienda antes de los errores de la POST. Si esto sucede, los códigos de error se pueden mostrar mediante LED parpadeantes o señales de sonido... Por ejemplo, IMac de Apple reproducirá tres tonos consecutivos, hará una pausa de cinco segundos y luego repetirá los tonos cuando se detecte una mala RAM durante el inicio. La mayoría de las PC también emiten un pitido cuando se detectan errores de POST, aunque cada fabricante utiliza sus propios códigos.

POST es un término bastante técnico que solo lo utilizan técnicos informáticos sobre una base regular. Sin embargo, este es un buen acrónimo, ya que ayuda a comprender mejor los mensajes de error que pueden aparecer en las computadoras u otros dispositivos electrónicos... Si su computadora no se inicia debido a un error POST, puede usar un dispositivo diferente para encontrar el significado y la causa del error en el sitio web del fabricante. Luego, puede tomar la acción apropiada: retire el módulo de memoria o reinstale la tarjeta de video y luego reinicie el equipo.

OBTENER

POST también es un método para pasar variables Formularios HTML de una página web a otra sin mostrarlas en la barra de direcciones. Un método alternativo es GET, que agrega valores a la URL. Las solicitudes HTTP POST proporcionan datos adicionales del cliente (navegador) al servidor en el cuerpo del mensaje. Por el contrario, las solicitudes GET incluyen todos los datos necesarios en la URL. Los formularios en HTML pueden usar cualquier método especificando método = POST o método = GET (predeterminado) en el elemento

... El método especificado determina cómo se envían los datos del formulario al servidor. Cuando se utiliza el método GET, todos los datos del formulario se codifican en URL como parámetros de cadena de consulta. Con POST, los datos del formulario aparecen en el cuerpo del mensaje de solicitud HTTP.

Diferencias en el envío de formularios

El método de solicitud POST solicita al servidor web que acepte y almacene los datos incluidos en el cuerpo del mensaje de solicitud. A menudo se usa al cargar un archivo o al enviar un formulario web completo.

El método de solicitud HTTP GET recupera información del servidor. Como parte de una solicitud GET, es posible que se pasen algunos datos en la cadena de consulta de la URL, especificando términos de búsqueda, rangos de fechas u otra información que identifique la solicitud.

Como parte de una solicitud POST, se puede enviar una cantidad arbitraria de datos de cualquier tipo al servidor en el cuerpo del mensaje de solicitud. El campo de encabezado en una solicitud POST generalmente indica el tipo de medio de Internet del cuerpo del mensaje.

La principal diferencia entre las solicitudes GET y POST es que corresponden a diferentes solicitudes HTTP según se definen en las especificaciones HTTP. El proceso de envío de ambos métodos comienza de la misma manera: el navegador crea el conjunto de datos del formulario y luego lo codifica de la manera indicada por el atributo enctype. Para METHOD = "POST, el atributo enctype puede ser multipart / form-data o application / x-www-form-urlencoded, mientras que para METHOD =" GET "solo se activa a través de application / x-www-form-urlencoded. Este formulario los datos se configuran y luego se pasan al servidor.

Para enviar un formulario con METHOD = "GET", el navegador construye una URL tomando el valor del atributo action y agregando el conjunto de datos del formulario, codificado usando el tipo de contenido application / x-www-form-urlencoded). Luego, el navegador trata esa URL como si se refiriera a un enlace (o como si el usuario hubiera escrito la URL manualmente). El navegador divide la URL en partes y reconoce el host, luego envía una solicitud GET a ese host con el resto de la URL como argumento. Es importante tener en cuenta que este proceso significa que los datos del formulario se limitan a los códigos ASCII. Se debe tener especial cuidado para codificar y decodificar otros tipos de caracteres cuando se transmiten a través de una URL en formato ASCII.

Un envío de formulario con METHOD = "POST" hace que se envíe una solicitud POST utilizando el valor del atributo de acción y el mensaje generado de acuerdo con el tipo de contenido especificado por el atributo enctype.

PHP

PHP está incrustado en HTML. Esto significa que el código PHP se puede insertar en una página HTML. El servidor que aloja la página lee o analiza el código PHP. La salida de las funciones GET y POST en PHP en una página generalmente se devuelve como HTML que el navegador puede leer. Debido a que el código PHP se convierte a HTML antes de que se cargue la página, los usuarios no pueden ver el código PHP en la página. Esto hace que las páginas PHP sean suficientes para acceder a bases de datos y otra información protegida.

La mayoría de Sintaxis PHP tomado de otros lenguajes como C, Java y Perl. Sin embargo, PHP tiene una serie de características únicas y especiales. El objetivo de este lenguaje es permitir a los desarrolladores web escribir páginas generadas dinámicamente de forma rápida y sencilla.

Wordpress

WordPress es sistema libre gestión de contenido utilizada para crear y mantener sitios web. Su facilidad de uso y sus características únicas para blogs lo han convertido en la herramienta de blogs más popular en Internet.

La interfaz de WordPress permite a cualquier persona sin experiencia en desarrollo web crear y publicar un sitio web. Las herramientas de blogs integradas proporcionan una forma sencilla de realizar un seguimiento de las publicaciones individuales, los visitantes y los comentarios de los usuarios.

Aunque hay miles disponibles Plantillas de WordPress y complementos, el sistema POST GET en WordPress todavía tiene sus limitaciones. Dado que se trata de un servicio basado en plantillas, el usuario debe comenzar con un sitio web prediseñado en lugar de crear páginas desde cero. Además, no hay forma de incrustar scripts o mantener una base de datos con el mismo nivel de control que ofrece un sitio web personalizado.

La herramienta POST_GET_ID () le permite usar scripts para controlar el artículo, ya que tiene un identificador único, y cuando lo envía como un formulario a través de estos métodos, el menú desplegable se enviará con identificador único lo que permite que el script advierta qué publicación se está ejecutando. Alternativamente, se puede enviar una variable oculta que permitirá al script ver qué publicación pertenece a la vista.

Esta publicación tiene como objetivo explicar los principios de la transferencia de datos en Internet utilizando dos métodos principales: GET y POST. Lo escribí como un suplemento a las instrucciones sobre el generador de trabajo por turnos para aquellos que apenas están interesados ​​en los detalles ☺.

Vaya a la siguiente URL (esto es para una explicación visual): http://calendarin.net/calendar.php?year=2016 Nota sobre Barra de dirección navegador: calendarin.net/calendar.php ? año = 2016 El archivo principal tiene un nombre, seguido de un signo de interrogación (?) Y un parámetro de "año" con un valor de "2016". Entonces, todo lo que sigue al signo de interrogación es una solicitud GET. Es simple. Para pasar más de un parámetro, pero varios, deben estar separados por un ampersand (&). Ejemplo: calendarin.net/calendar.php ? year = 2016 & display = work-days-and-days-off

El archivo principal todavía tiene un nombre, seguido de un signo de interrogación (?), Luego - el parámetro "año" con el valor "2016", luego - el signo comercial (&), luego - el parámetro "mostrar" con el valor "trabajo -días-y-días-libres ".

Los parámetros GET se pueden cambiar directamente en la barra de direcciones del navegador. Por ejemplo, cambiando el valor "2016" a "2017" y presionando la tecla, irá al calendario de 2017.

Esta es la transmisión de datos de forma oculta (la dirección de la página no cambia); es decir, puede ver lo que se transmitió solo con la ayuda de un programa (script). Por ejemplo, en la siguiente herramienta para contar caracteres en un texto, los datos de origen se transmiten utilizando el método POST: http://usefulonlinetools.com/free/character-counter.php

Si tiene alguna duda, comentario y mi E-mail a su servicio.

Además del método GET, que discutimos en la publicación anterior, existe otro método para enviar una solicitud a través del protocolo HTTP: el método POST. El método POST también se utiliza con mucha frecuencia en la práctica.

Si, para acceder al servidor mediante el método GET, fue suficiente para nosotros escribir la solicitud en la URL, entonces en el método POST todo funciona de acuerdo con un principio diferente.

Para cumplir con este tipo de solicitud, debemos hacer clic en el botón con el atributo type = "enviar", que se encuentra en la página web. Tenga en cuenta que este botón se encuentra en el elemento con el atributo de método establecido en post.

Considere este HTML:

Ingrese texto:


Si el usuario ingresa cualquier texto en el campo de texto y hace clic en el botón "Enviar", entonces la variable de texto con el valor del contenido ingresado por el usuario se enviará al servidor.

Solicitudes POST y GET en palabras simples

Esta variable será enviada por el método POST.

Si escribe en la forma como esta:

Luego, los datos se enviarán mediante el método GET.

Si, en el caso de una solicitud GET, la cantidad de datos que podríamos transferir estaba limitada por la longitud de la barra de direcciones del navegador, entonces, en el caso de una solicitud POST, no existe tal limitación y podemos transferir cantidades significativas. de información.

Otra diferencia entre el método POST y GET, el método POST oculta todas las variables que se le pasan y sus valores en su cuerpo (Entity-Body). En el caso del método GET, se almacenaron en la cadena de solicitud (Request-URI).

A continuación, se muestra un ejemplo de una solicitud POST:

POST / HTTP / 1.0 \ r \ n
Anfitrión: www.site.ru \ r \ n
Referente: http://www.site.ru/index.html\r\n
Cookie: ingresos = 1 \ r \ n
Tipo de contenido: aplicación / x-www-form-urlencoded \ r \ n
Longitud del contenido: 35 \ r \ n
\ r \ n
login = Dima & contraseña = 12345

Por lo tanto, al transmitir datos mediante el método POST, será mucho más difícil para un atacante interceptarlos, porque están ocultos a la vista, por lo que el método POST se considera más seguro.

Además, el método POST puede transferir no solo texto, sino también datos multimedia (imágenes, audio, video). Hay un parámetro de tipo de contenido especial que determina el tipo de información que se debe transferir.

Finalmente, la variable POST se utiliza para recuperar los datos transmitidos por este método en el servidor.

Aquí hay un ejemplo de procesamiento en lenguaje PHP:

echo $ _POST ["texto"];
?>

En la última publicación, decidimos qué envía el navegador (cliente) Servidor HTTP solicitudes y el servidor envía respuestas HTTP al cliente. Estas solicitudes y respuestas se procesan de acuerdo con ciertas reglas. Hay algo así como sintaxis, cómo y en qué secuencia se debe escribir. Debe haber una estructura bien definida.

Echemos un vistazo más de cerca a esta estructura, que se utiliza para crear solicitudes y respuestas en el protocolo HTTP.

Una solicitud HTTP consta de tres partes principales, que están en el orden exacto que se muestra a continuación. Hay una línea vacía entre los encabezados y el cuerpo del mensaje (como separador), es un carácter de avance de línea.

Cadena vacía (separador)

Publicar y recibir solicitudes, ¿cuál es la diferencia entre ellas y cuál es mejor y con qué fines?

cuerpo del mensaje (cuerpo de la entidad) - parámetro opcional

Cadena de consulta: especifica el método de transferencia, la URL de acceso y la versión del protocolo HTTP.

Encabezados- describir el cuerpo de los mensajes, transmitir varios parámetros y otra información e información.

Cuerpo del mensaje- estos son los datos en sí, que se transmiten en la solicitud. El cuerpo del mensaje es opcional y se puede omitir.

Cuando recibimos una solicitud de respuesta del servidor, el cuerpo del mensaje suele ser el contenido de la página web. Pero, al realizar solicitudes al servidor, en ocasiones también puede estar presente, por ejemplo, cuando transferimos los datos que completamos en el formulario realimentación al servidor.

Con más detalle, cada elemento de la solicitud, lo consideraremos en las siguientes notas.

Tomemos como ejemplo una solicitud de servidor real. He resaltado cada parte de la solicitud con su propio color: la línea de solicitud es verde, los encabezados son naranja, el cuerpo del mensaje es azul.

Solicitud del navegador:

Anfitrión: webgyry.info

Cookie: configuración de wp

Conexión: mantener vivo

En el siguiente ejemplo, el cuerpo del mensaje ya está presente.

Respuesta del servidor:

Tipo de contenido: texto / html; juego de caracteres = UTF-8

Codificación de transferencia: fragmentado

Conexión: mantener vivo

Keep-Alive: tiempo de espera = 5

X-Pingback: //webgyry.info/xmlrpc.php

documento sin titulo

Estos son los mensajes que se intercambian entre el cliente y el servidor a través del protocolo HTTP.

Por cierto, ¿quiere saber si tiene algún sentido en algún elemento de su sitio que utilice los "objetivos" de Yandex Metrics y Google Analytics?

Elimine lo que NO funciona, agregue lo que funcione y duplique su resultado final.

Un curso sobre cómo establecer objetivos de Yandex Metrica.

Un curso sobre cómo configurar los objetivos de Google Analytics.

El cliente HTTP envía una solicitud al servidor en forma de mensaje de solicitud, que tiene el siguiente formato:

  • Cadena de solicitud (obligatorio)
  • Título (elemento opcional)
  • Cadena vacía (obligatorio)
  • Cuerpo del mensaje (opcional)

Echemos un vistazo a cada uno de estos elementos por separado.

Cadena de consulta

La cadena de solicitud comienza con un token de método, seguido del URI de solicitud y la versión del protocolo. Los elementos están separados entre sí por espacios:

Considerar elemento dado en detalles

Método de solicitud

Este elemento especifica el método que se llamará en el lado del servidor en el URI especificado.

Hay ocho métodos en HTTP:

  • CABEZA
    Se usa para obtener la línea de estado y el título del servidor por URI. No cambia los datos.
  • OBTENER
    Se utiliza para recibir datos del servidor en el URI especificado. No cambia los datos.
  • CORREO
    Se utiliza para enviar datos al servidor (como información del desarrollador, etc.) mediante formularios HTML.
  • PONER
    Reemplaza todos los datos anteriores del recurso con los nuevos datos cargados.
  • ELIMINAR
    Elimina todos los datos actuales del recurso especificado por el URI.
  • CONECTAR
    Establece una conexión de túnel con el servidor en el URI especificado.
  • OPCIONES
    Describe las propiedades de conexión para el recurso especificado.
  • RASTRO
    Proporciona un mensaje que contiene un seguimiento inverso de la ubicación del URI del recurso especificado.

Solicitar URI

URI (Identificador uniforme de recursos) es el identificador del recurso al que se envía la solicitud. El formato de URI más común se muestra a continuación:

‘*’ se utiliza cuando la solicitud HTTP no es específica de un recurso específico, sino de un servidor. Se utiliza solo cuando no es necesario aplicar el método al recurso. Por ejemplo,

uri absoluto se utiliza cuando se realiza una solicitud HTTP a un proxy. Se solicita al proxy que pase la solicitud de la caché disponible y devuelva una respuesta. Por ejemplo:

asbolutny_path | una fuente utilizado por la mayoría de los chatso.

Aprender a trabajar con solicitudes GET y POST

Se solicita un recurso específico de un servidor específico. Por ejemplo, un cliente desea obtener un recurso del servidor a través del puerto 80. La dirección del recurso es "www.proselyte.net" y envía la siguiente solicitud:

Solicitar campos de encabezado

Los campos de encabezado permiten que el cliente se comunique Información adicional sobre la solicitud y sobre sí mismo al servidor. Estos campos actúan como modificadores de solicitud.

A continuación se muestra una lista de los campos de encabezado más importantes que se pueden utilizar:

  • Aceptar-juego de caracteres
  • Aceptar codificación
  • Aceptar-idioma
  • Autorización
  • Suponer
  • If-Match
  • Si-modificado-desde
  • If-None-Match
  • If-Range
  • If-Unmodified-Since
  • Distancia
  • Referer
  • Agente de usuario

Si queremos implementar nuestro propio cliente y nuestro propio servidor web, entonces podemos crear nuestros propios campos de encabezado.

Ejemplo de solicitud HTTP

Con esto concluye el estudio. Solicitudes HTTP.
En el próximo artículo, veremos las respuestas HTTP.

Una de las formas en que puede enviar una solicitud HTTP al servidor es una solicitud GET. Este método es el más común y con mayor frecuencia se realizan solicitudes al servidor con él.

La forma más sencilla de crear una solicitud GET es escribir la URL en la barra de direcciones de su navegador.

El navegador transmitirá la siguiente información al servidor:

GET / HTTP / 1.1
Anfitrión: webgyry.info
Agente de usuario: Mozilla / 5.0 (Windows NT 6.1; rv: 18.0) Gecko / 20100101 Firefox / 18.0
Aceptar: texto / html, aplicación / xhtml + xml, aplicación / xml; q = 0,9, * / *; q = 0,8
Aceptar-Idioma: ru-RU, ru; q = 0.8, en-US; q = 0.5, en; q = 0.3
Aceptar codificación: gzip, desinflar
Cookie: configuración de wp
Conexión: mantener vivo

La solicitud consta de dos partes:

1. línea de solicitud

2.cabeceras (encabezados de mensaje)

Tenga en cuenta que la solicitud GET no tiene un cuerpo de mensaje. Pero esto no significa que con su ayuda no podamos transferir ninguna información al servidor.

Diferencia entre los métodos GET y POST

Esto se puede hacer usando parámetros GET especiales.

Para agregar parámetros GET a la solicitud, debe colocar un signo "?" Al final de la URL. y después, empieza a preguntarles según la siguiente regla:

nombre_parámetro1 = valor_parámetro1 & nombre_parámetro2 = valor_parámetro2 & ...

El separador entre los parámetros es el signo "&".

Por ejemplo, si queremos pasar dos valores al servidor, el nombre de usuario y su edad, entonces esto se puede hacer con la siguiente línea:

http://site.ru/page.php?name=dima&age=27

Cuando se ejecuta esta consulta, los datos pasan a la variable de entorno denominada QUERY_STRING, de la cual se pueden recuperar en el servidor utilizando el lenguaje de programación web del lado del servidor.

Aquí hay un ejemplo de cómo se puede hacer esto en PHP.

echo "Tu nombre:". $ _GET ["nombre"]. "
»;
echo "Tu edad:". $ _GET ["edad"]. "
»;
?>

La construcción $ _GET ["parameter_name"] le permite mostrar el valor del parámetro pasado.

Como resultado de ejecutar este código en el navegador, se mostrará lo siguiente:

Tu nombre: dima
Tu edad: 27

también hacemos una solicitud al servidor utilizando el método GET.

Esta publicación es una respuesta a una pregunta formulada en un comentario sobre uno de mis artículos.

En este artículo, quiero contarte cuáles son los métodos HTTP GET / POST / PUT / DELETE y otros, para qué se inventaron y cómo usarlos de acuerdo con REST.

HTTP

Entonces, ¿cuál es exactamente uno de los principales protocolos de Internet? Enviaré los pedantes a RFC2616 y les diré al resto como un humano :)

Este protocolo describe la comunicación entre dos computadoras (cliente y servidor), basada en mensajes llamados Solicitud y Respuesta. Cada mensaje consta de tres partes: una línea de inicio, encabezados y un cuerpo. En este caso, solo se requiere la línea de salida.

Las líneas de inicio para la solicitud y la respuesta tienen un formato diferente; solo nos interesa la línea de inicio de la solicitud, que se ve así:

MÉTODO URI HTTP / VERSIÓN ,

Donde METHOD es solo el método de solicitud HTTP, URI es el identificador de recursos, VERSION es la versión del protocolo (en este momento versión actual 1.1).

Los encabezados son una colección de pares nombre-valor separados por dos puntos. En las cabeceras se transmite diversa información de servicio: codificación del mensaje, nombre y versión del navegador, dirección de la que procede el cliente (Referente), etc.

El cuerpo del mensaje son, de hecho, los datos transmitidos. En la respuesta, los datos transmitidos, por regla general, es la página html que solicitó el navegador, y en la solicitud, por ejemplo, en el cuerpo del mensaje, se transmite el contenido de los archivos cargados en el servidor. Pero, por regla general, el cuerpo del mensaje en la solicitud no existe en absoluto.

Ejemplo de comunicación HTTP

Veamos un ejemplo.

Consulta:
OBTENER /index.php HTTP / 1.1 Host: example.com Usuario-Agente: Mozilla / 5.0 (X11; U; Linux i686; ru; rv: 1.9b5) Gecko / 2008050509 Firefox / 3.0b5 Aceptar: texto / html Conexión: cerrar
La primera línea es la cadena de consulta, el resto son encabezados; falta el cuerpo del mensaje

Respuesta:
HTTP / 1.0 200 OK Servidor: nginx / 0.6.31 Contenido-Idioma: ru Tipo de contenido: texto / html; charset = utf-8 Contenido-Longitud: 1234 Conexión: cerrar ... LA PÁGINA HTML EN SÍ MISMA ...

Recursos y métodos

Volvamos a la cadena de consulta inicial y recordemos que contiene un parámetro como URI. Esto significa Identificador uniforme de recursos, un identificador uniforme de recursos. Un recurso es, por regla general, un archivo en el servidor (un ejemplo de URI en este caso es "/styles.css"), pero en general, un recurso puede ser un objeto abstracto ("/ blogs / webdev /" - indica el bloque "Desarrollo web", y no para un archivo específico).

El tipo de solicitud HTTP (también llamado método HTTP) le dice al servidor qué acción queremos tomar con el recurso. Inicialmente (a principios de los 90) se asumió que el cliente solo podía querer una cosa del recurso: obtenerla, pero ahora, usando el protocolo HTTP, puede crear publicaciones, editar el perfil, eliminar mensajes y mucho más. Y estas acciones son difíciles de combinar con el término "recibir".

Para diferenciar acciones con recursos a nivel de métodos HTTP, se inventaron las siguientes opciones:

  • OBTENER - obtener un recurso
  • POST - creando un recurso
  • PUT - actualización de recursos
  • BORRAR: eliminar un recurso
Preste atención al hecho de que la especificación HTTP no obliga al servidor a comprender todos los métodos (que de hecho son mucho más de 4); solo se requiere GET, y tampoco le dice al servidor lo que debe hacer al recibir una solicitud con un método particular. Esto significa que el servidor responde a una solicitud DELETE /index.php HTTP / 1.1 no está obligado a eliminar la página index.php en el servidor, lo mismo que para la solicitud GET /index.php HTTP / 1.1 no está obligado a devolverle la página index.php, puede eliminarla como :)

REST entra en juego

REST (Transferencia de estado representativo): este término fue introducido en 2000 por Roy Fielding, uno de los desarrolladores del protocolo HTTP, como nombre para un grupo de principios para la creación de aplicaciones web. En general, REST cubre un área más amplia que HTTP; se puede usar en otras redes con otros protocolos. REST describe los principios de la interacción cliente-servidor, basados ​​en los conceptos de "recurso" y "verbo" (puede entenderlos como sujeto y predicado). En el caso de HTTP, el recurso está definido por su URI y el verbo es el método HTTP.

REST propone abandonar el uso del mismo URI para diferentes recursos (es decir, las direcciones de dos artículos diferentes como /index.php?article_id=10 y /index.php?article_id=20 no son una forma REST) ​​y usar diferentes métodos HTTP para diferentes acciones. Es decir, una aplicación web escrita con el enfoque REST eliminará un recurso al acceder a él con el método HTTP DELETE (por supuesto, esto no significa que deba poder eliminar todo y todo, pero alguna la solicitud de eliminación de la aplicación debe utilizar el método HTTP DELETE).

REST brinda a los programadores la capacidad de escribir aplicaciones web estandarizadas y un poco más bonitas que nunca. Usando REST, el URI para agregar un nuevo usuario no será /user.php?action=create (método GET / POST), sino simplemente /user.php (estrictamente método POST).

Como resultado, la combinación de lo existente la especificación HTTP y el enfoque REST finalmente tiene sentido para los diversos métodos HTTP. GET: devuelve un recurso, POST: crea uno nuevo, PUT: actualiza uno existente, DELETE: elimina.

¿Problemas?

Sí, hay un pequeño problema con la aplicación de REST en la práctica. Este problema se llama HTML.

Las solicitudes PUT / DELETE se pueden enviar a través de XMLHttpRequest, contactando al servidor "manualmente" (por ejemplo, a través de curl o incluso a través de telnet), pero no puede crear un formulario HTML enviando una solicitud PUT / DELETE completa.

El punto es que la especificación HTML no le permite crear formularios que envíen datos de manera diferente a través de GET o POST. Por lo tanto, para un funcionamiento normal con otros métodos, debe imitarlos artificialmente. Por ejemplo, en Rack (el mecanismo por el cual Ruby interactúa con el servidor web; Rails, Merb y otros marcos de Ruby se crean usando Rack), puede agregar un campo oculto llamado "_method" al formulario y especificar el nombre del método como el valor (por ejemplo, "PUT") - en este caso, se enviará una solicitud POST, pero Rack podrá pretender que recibió una PUT, no una POST.

Lo que tienen en común es que funcionan de la misma manera. Técnicamente, no hay diferencia entre ellos. Pero existen diferencias ideológicas.

Los cubriré en el contexto de PHP. Tenga en cuenta que Protocolo HTTP está indirectamente relacionado con PHP porque fue creado para el intercambio páginas html PHP simplemente amplía las capacidades de ambos.

La solicitud GET se usa para recibir datos y POST para enviar. (Les recuerdo que técnicamente funcionan de la misma manera).

Por lo tanto, en el contexto de PHP, basados ​​en esta ideología, hicieron lo siguiente:
1. Las matrices superglobales ($ _GET, $ _POST) se crean por defecto cada vez que inicia PHP.
2. Si hay un signo de interrogación (?) En la cadena de consulta. Entonces todo lo que cuenta después de él parámetros Solicitud GET, se presentan en el formato "clave" = "valor" y el carácter comercial (&) se utiliza como separador
Ejemplo:
OBTENER /index.php?name=Andrey&surname=Galkin
esta es una cadena de consulta, hay 2 parámetros. estos parámetros terminarán en la matriz $ _GET.
3. $ _POST se rellena de otra forma. el contenido de esta matriz se completa a partir de los "encabezados de solicitud". Es decir, desde un lugar oculto a la vista de forma explícita. El navegador asume toda la rutina de crear dichos encabezados. Aunque a veces algo se edita manualmente en los encabezados.

La mayoría de las veces, la solicitud de publicación se utiliza en formularios (para enviar datos).

Por ejemplo, tenemos un formulario de inicio de sesión de 2 campos de inicio de sesión y contraseña.

Imaginemos que estamos usando el método GET. Luego, al enviar el formulario, nos dirigiremos a la siguiente dirección /login.php?login=Andrey&password=123 acepto que no es nada seguro transferir dicha información de esta manera. Cualquiera puede abrir su navegador y comenzar a ingresar la dirección del sitio, puede ver sus contraseñas e inicios de sesión del historial.

Pero si especificamos con el método POST, entonces recibiríamos la siguiente solicitud:
POST /login.php (login = Andrey & password = 123) lo que estaría oculto entre paréntesis y no se guardaría en el navegador de ninguna manera.

En general, para resumir:
OBTENER es obtener una página específica de una manera específica (clasificación, página de blog actual, cadena de búsqueda, etc.).
POST: para enviar datos que no afectan la visualización de la página, en el sentido de que estos datos solo afectan el resultado de la ejecución del script (inicios de sesión, contraseñas, números de tarjetas de crédito, mensajes, etc.).

Y una buena noticia más, se pueden combinar, por ejemplo
POST /index.php?page=login (login = Andrey & password = 123) Creo que ya he explicado lo suficiente lo que vendrá y qué parámetros entrarán en cada matriz.