Formato básico del protocolo HTTP

HTTP significa Protocolo de transferencia de hipertexto (Protocolo de transferencia de hipertexto), y HTTP transmite datos según el protocolo TCP/IP.

captura de cromo

Nota: el navegador Chrome o el navegador Chrome kernel está disponible (como Edge, Firefox)

  1. Abra las herramientas para desarrolladores en la página de destino:
    abrir herramientas de desarrollo
  2. Haga clic en Red:
    inserte la descripción de la imagen aquí
    en este punto, puede ver todas las solicitudes para la página de destino.
  3. Ver solicitudes y respuestas:solicitud y respuesta

Captura de paquetes de proxy de Fiddler

La herramienta de captura de paquetes integrada en el navegador tiene funciones limitadas. En el proceso de desarrollo real, a menudo se seleccionan algunas herramientas de proxy para la captura de paquetes.
Las herramientas comunes de captura de paquetes incluyen principalmente: Charles, Wireshark, Tcpdump, Fiddler, etc. Para empezar, utilice el sencillo y gratuito Fiddler (Fiddler solo está disponible para sistemas Windows).

Fiddler no admite el rastreo de HTTPS de forma predeterminada, por lo que debe configurarse primero: Primero haga clic en Herramientas-opciones-HTTPS para configurar:

inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí
Entonces Fiddler puede capturar paquetes.

Por ejemplo, para capturar la solicitud de página HTML de Bilibili:
primero abra el sitio web de bilibili, el paquete a capturar es:
inserte la descripción de la imagen aquí
tantos paquetes, ¿cómo determinar cuál estamos buscando?

  1. Primero mire la URL, que es el nombre de dominio de destino.
  2. Los diferentes tipos de paquetes tienen diferentes colores Aquí estamos capturando paquetes de páginas HTML, así que busque los azules.
  3. Mire el tamaño del cuerpo, la página HTML solicitada, el tamaño del cuerpo es generalmente muy grande.

Después de encontrar el objetivo, haga doble clic para ver los detalles:
inserte la descripción de la imagen aquí

formato de protocolo HTTP

HTTP es un protocolo de solicitud-respuesta, donde el cliente (es decir, el navegador) inicia una solicitud y el servidor devuelve una respuesta. Puede analizar los detalles y las características de la solicitud y la respuesta del protocolo HTTP mediante la captura de paquetes.
La herramienta de captura de paquetes puede usar las herramientas de desarrollo de Chrome o Fiddler.

Solicitud HTTP

inserte la descripción de la imagen aquí
Para las solicitudes Get, generalmente no hay cuerpo, pero las solicitudes Post generalmente tienen un cuerpo, y la parte después de la línea en blanco es el contenido del cuerpo.
Por ejemplo, una solicitud de publicación:
inserte la descripción de la imagen aquí
aunque el cuerpo se puede colocar en la solicitud de obtención, generalmente no se recomienda. Algunos servidores o proxies ignorarán o eliminarán el cuerpo en el método de obtención, y algunos clientes no admiten agregar el cuerpo a la solicitud. obtener solicitud Por lo tanto, es mejor utilizar una solicitud de correos para llevar el cuerpo.

primera linea

La primera línea incluye el método, la URL y el número de versión.

URL

URL (Uniform Resource Locator), es decir, Uniform Resource Locator , comúnmente conocido como "URL". Cada archivo en Internet tiene una URL única.
Una URL generalmente incluye: protocolo, host, puerto, ruta, parámetros de consulta, ancla.
inserte la descripción de la imagen aquí

método

Los métodos comunes del protocolo HTTP son:
inserte la descripción de la imagen aquí

obtener método

GET es el método HTTP más utilizado para obtener un recurso del servidor. La mayoría de los paquetes capturados son solicitudes Get.

Tome la página de inicio de Baidu como ejemplo:
inserte la descripción de la imagen aquí
Características :

  • Los parámetros de consulta en la URL pueden o no estar vacíos
  • Existen varios atributos en el encabezado en forma de pares clave-valor
  • El cuerpo de la solicitud Get generalmente está vacío.
Método de publicación

inserte la descripción de la imagen aquí
Características :

  • Los parámetros de consulta en la URL generalmente están vacíos
  • Existen varios atributos en el encabezado en forma de pares clave-valor
  • La parte del cuerpo generalmente no está vacía.
  • El formato de datos en el cuerpo está especificado por el tipo de contenido en el encabezado
  • La longitud del cuerpo se especifica mediante Content-Length en el encabezado.
La diferencia entre Obtener y Publicar

No existe una diferencia esencial entre obtener y publicar. Obtener y publicar son generalmente intercambiables, pero existen algunas diferencias entre los dos:

  • get generalmente se usa para la adquisición, y post generalmente se usa para el envío
  • El método get obtiene datos a través de parámetros de consulta, y el cuerpo generalmente está vacío
  • El método de publicación envía datos a través del cuerpo y los parámetros de consulta generalmente están vacíos.
  • Get generalmente es idempotente y post generalmente no es idempotente (cada vez que la misma solicitud devuelve la misma respuesta, se considera idempotente)
  • Get se puede almacenar en caché (debido a la idempotencia), la publicación no se puede almacenar en caché

Atributos en el encabezado de la solicitud

  • Host: Indica la dirección y el puerto del host del servidor

Obviamente, la URL ya contiene la dirección y el puerto del servidor, entonces, ¿por qué configurar un Host?
De hecho, un servidor puede albergar varios sitios web. Estos sitios web comparten la misma dirección IP y número de puerto, pero tienen diferentes nombres de dominio. En este momento, se refleja el rol de Anfitrión. El atributo Host a menudo usa el nombre de dominio como un campo, que es fácil de identificar para el servidor.
Por ejemplo, el sitio web A: www.A.com y el sitio web B: www.B.com están alojados en el mismo servidor, por lo que la dirección IP y el número de puerto en sus URL son los mismos. Independientemente de si la solicitud la inicia el sitio web A o el sitio web B, se obtendrá la misma dirección IP y número de puerto después de la resolución del nombre de dominio a través del protocolo DNS. En este momento, se necesita el atributo Host para identificar si se trata de una solicitud de sitio web A o sitio web B.

  • User-Agent: Indica alguna información sobre el navegador o sistema operativo, incluyendo tipo, versión, idioma, etc.
    La función del User-Agent es permitir que el servidor identifique el tipo y las capacidades del cliente y devuelva una respuesta adecuada.
    Por ejemplo, el minijuego 4399 necesita un complemento Flash para funcionar con normalidad, pero actualmente el navegador prohíbe su propia función Flash, por lo que después de abrir un minijuego, mostrará: Al mismo tiempo, User-Agent también está se utiliza para indicar si el cliente es un teléfono móvil
    inserte la descripción de la imagen aquí
    o una página web, que también explica por qué el mismo sitio web tiene diferentes diseños de página cuando se abre con un teléfono móvil y cuando se abre con una computadora.

  • Content-Length: indica la longitud de datos del cuerpo

  • Tipo de contenido: indica que hay muchos tipos de tipo de contenido en el formato de datos en el cuerpo
    , generalmente dividido en las siguientes categorías:

    1. texto/sin formato, indica el tipo de texto sin formato . Pondrá los datos en el formulario directamente en el cuerpo de la solicitud. Este formato es adecuado para transferir datos de texto simple.

    2. El que comienza con aplicación indica el tipo de aplicación . Por ejemplo: application/json indica el formato de datos JSON y application/x-www-form-urlencoded indica el formato de datos del formulario.

    3. Comenzar con mutipart significa un tipo de varias partes . Por ejemplo: multipart/form-data indica el formato de datos del formulario.

      application/x-www-form-urlencoded es el formato de datos de formulario predeterminado, adecuado para la mayoría de los escenarios, pero no puede cargar archivos ni datos binarios .
      multipart/form-data es un formato de datos de varias partes, que divide los datos del formulario en varias partes, cada parte está separada por un símbolo específico y cada parte puede tener su propio tipo de contenido y método de codificación. Se pueden cargar archivos y datos binarios .
      multipaty/form-data consumirá más recursos y ancho de banda, por lo que multipart/form-data solo se usa cuando se cargan archivos o datos binarios, y application/x-www-form-urlencoded se usa en otros casos.

  • Remitente: indica desde qué página se redirige la página.
    Por ejemplo, si salta de Baidu a la estación B, el paquete capturado es:
    inserte la descripción de la imagen aquí
    la referencia aquí significa que la estación B fue redirigida desde Baidu.
    Cuando buscamos en los motores de búsqueda, siempre habrá anuncios, que son entregados por los anunciantes. Los anunciantes aumentan la exposición a través de las búsquedas: los anunciantes
    inserte la descripción de la imagen aquí
    confirman el volumen de transacciones a través de los usuarios que hacen clic en los enlaces. Pero los anunciantes no solo publicarán anuncios en un motor de búsqueda, por lo que la referencia puede ayudar a determinar la fuente.

Cookies y Sesiones

El protocolo HTTP es un protocolo sin estado. Sin estado significa que el servidor HTTP no tiene función de memoria. Cada vez que el cliente envía una solicitud al servidor, el servidor no puede determinar si la solicitud está relacionada con la solicitud anterior. Después de comprar un producto, al prepararse para operaciones posteriores, el servidor no puede determinar si esta solicitud está relacionada con la solicitud anterior. El motivo de este diseño es simplificar la lógica de procesamiento del servidor y ahorrar el costo de transmisión de la red, pero no es conveniente para los usuarios operar, por lo que se introducen Cookie y Sesión para compensar esta parte del defecto.

  • Cookie La
    cookie es un mecanismo para almacenar información del usuario en el lado del cliente . Después de que el cliente envía una solicitud, el servidor devuelve una cookie al cliente además de la respuesta. La cookie almacena la información del estado actual del cliente, como el estado de inicio de sesión. Cuando el cliente envíe una solicitud la próxima vez, enviará la cookie junto y el servidor puede determinar el estado del cliente en función de la cookie.
  • Las cookies de sesión
    a menudo contienen información confidencial, que es transparente durante la transmisión, no es segura y es fácil de robar y manipular. La sesión es un enfoque más seguro.
    La sesión es un mecanismo para almacenar información del usuario en el servidor . Después de que el cliente envía una solicitud, el servidor generará información de cookies y una ID de sesión además de devolver una respuesta. El servidor devuelve la ID de sesión al cliente y al cliente posterior inicia una solicitud. , el ID de sesión se enviará junto, y el servidor puede encontrar la información de Cookie correspondiente a través de este ID de sesión, para determinar el estado del cliente.

La diferencia entre Cookie y Sesión

  • La ubicación de almacenamiento es diferente : la cookie se almacena en el cliente y la sesión se almacena en el servidor.
  • La seguridad es diferente : la cookie no es segura y la sesión es relativamente segura.
  • Rendimiento diferente : las cookies ocupan los recursos del cliente y afectan la experiencia de navegación; las sesiones ocupan los recursos del servidor y afectan el rendimiento.
  • La fecha de caducidad es diferente : la cookie se puede configurar con una fecha de caducidad y se eliminará automáticamente cuando caduque; si la sesión no tiene una fecha de caducidad establecida, se eliminará cuando se cierre el navegador.

Respuesta HTTP

Código de estado HTTP

  • Los códigos de estado comunes son:
código de estado significado
200 bien (normal)
404 No encontrado (no se encontró ningún recurso)
403 Olvidado: Acceso denegado)
405 Método no permitido (método no admitido)
500 Error Interno del Servidor
502 Mala puerta de enlace
504 Gateway Timeout (tiempo de espera de respuesta)
302 Mover temporalmente (redireccionado temporalmente)
301 Movido permanentemente
  • Resumen del código de estado:
    inserte la descripción de la imagen aquí

Encabezados y cuerpo de respuesta HTTP

Encabezados de respuesta HTTP

Las propiedades comunes de los encabezados de respuesta son:

  1. text/html, este formato convierte los datos de respuesta en un documento de formato HTML, que es adecuado para devolver datos de páginas web, pero se requiere un formato de codificación adicional.
    Por ejemplo: Tipo de contenido=texto/html; juego de caracteres=utf8
  2. text/xml, convierta los datos de respuesta en un documento de formato xml, este formato es adecuado para devolver datos estructurados, también es necesario establecer el formato de codificación o declarar el formato de codificación en el documento xml.
  3. El que comienza con imagen indica el tipo de imagen y convierte los datos de respuesta en una visualización de imagen.

Además, hay muchos atributos de respuesta como: texto/css, texto/javascript, etc.

Cuerpo de respuesta HTTP

El formato exacto del cuerpo de la respuesta depende del atributo Content-Type.
inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/weixin_71020872/article/details/130915701
Recomendado
Clasificación