JavaEE Elementary: solicitud y respuesta del protocolo HTTP

¿Qué es HTTP?


El nombre completo es Protocolo de transferencia de hipertexto .

HTTP es uno de los protocolos más utilizados en la capa de aplicación, y el navegador obtiene páginas web basadas en http.
En otras palabras, HTTP es el puente entre el navegador y el servidor.


HTTP a menudo se implementa en función del protocolo TCP en la capa de transporte .

Solemos transmitir datos a través del protocolo HTTP para abrir un sitio web.


Cuando ingresamos una "dirección web" ( URL ) de búsqueda de Sogou en el navegador, el navegador envía una solicitud HTTP al servidor de Sogou, y
el servidor de Sogou devuelve una respuesta HTTP.

Después de que el navegador analice el resultado de la respuesta, se mostrará como el contenido de la página que vemos.
(Durante este proceso, el navegador puede enviar múltiples solicitudes HTTP al servidor y el servidor devolverá múltiples respuestas correspondientes. Estas respuestas incluyen página HTML, CSS, JavaScript, imágenes, fuentes, etc.)




Cuando ingresamos una "URL" en el navegador, el navegador enviará una solicitud HTTP al servidor correspondiente.
Después de recibir la solicitud, el servidor de la otra parte devolverá una respuesta HTTP después del cálculo y procesamiento.


Formato de mensaje de protocolo HTTP

formato de protocolo HTTP

1 Uso de herramientas de captura de paquetes


Hay muchas herramientas de captura de paquetes, aquí se usa fiddler , porque se enfoca en http, y será más conveniente de usar.

Se puede descargar e instalar desde Internet, y el proceso es muy sencillo.



Después de iniciar, mostrará inmediatamente el proceso de un programa en la computadora actual usando el servidor http para interactuar.

2 El principio de la herramienta de captura de paquetes


La esencia de fiddler es un programa proxy , y hay dos precauciones al usarlo.

1. Puede entrar en conflicto con otros programas de proxy , y otros programas de proxy (incluidos algunos complementos del navegador) deben cerrarse al usarlos.


2. Para capturar paquetes correctamente, también debe habilitar la función https.

https es una versión evolucionada del protocolo basado en http, pero la mayoría de los servidores en Internet actualmente usan https.
De forma predeterminada, fiddler no puede capturar paquetes https y debe iniciar manualmente https e instalar el certificado.

2.1 ¿Qué es un proxy?


En realidad, un agente está buscando a alguien que haga el trabajo por usted.

Por ejemplo, quiero comer, pero me da flojera comprarlo, así que le digo a mi compañero de cuarto: "Tráeme comida cuando vayas a la cafetería, ¿de acuerdo?" Tráeme el arroz y te lo daré
. a él.



Si voy solo a la cafetería, también puedo comprar comida, pero como soy flojo, le pedí a mi compañero de cuarto que me la trajera.
En este momento, el compañero de cuarto es un "agente". En otras palabras, el compañero de cuarto me está ayudando con el trabajo. Cuando tengo inconvenientes, necesito enviar un agente.


Durante el proceso antes mencionado, el compañero de cuarto tuvo muy claro qué tipo de transacciones tenía con el dueño de la cafetería, por lo que pudo sacar un pequeño cuaderno y anotarlo.
fiddler es un proxy de este tipo .

2.2 Proxy directo e inverso


Los proxies también se dividen en proxy directo y proxy inverso .
El proxy que representa al cliente se llama proxy directo, y el proxy que representa al servidor se llama proxy inverso.



Cuando mi compañero de cuarto estaba comprando comida, el dueño de la cafetería estaba ocupado, así que encontré a una colegiala de medio tiempo para comprar la comida. En este momento, el compañero de cuarto me representaba y él era mi herramienta. Este es el agente positivo
.

La colegiala de medio tiempo representa al dueño de la cafetería, quien es la persona herramienta del jefe, es decir, el agente inverso .

3 Cómo habilitar https


1. Abra la interfaz de fiddler y haga clic en Herramientas .


2. En la interfaz que aparece, haga clic en Opciones...


3. En la interfaz que aparece, seleccione https y marque las cuatro opciones que aparecen.



Al marcar por primera vez, aparecerá la siguiente interfaz. Significa si instalar el certificado, asegúrese de hacer clic en Sí,






la parte azul aquí significa que es una página html y la parte verde significa que es un js .
Las partes gris y negra representan datos simples.


Haga doble clic en la opción en la lista de solicitudes a la izquierda para ver los detalles de la solicitud.






La solicitud http tiene un formato determinado y fiddler la analizará de acuerdo con el formato, mostrando diferentes efectos de visualización.

Seleccionar Raw en la imagen de arriba muestra el efecto más original.



Seleccione Raw en la esquina inferior derecha para mostrar la respuesta.


Haga clic en el botón en el cuadro rojo a continuación y seleccione Bloc de notas para abrir.



La siguiente es la solicitud para que se abra el Bloc de notas.



La parte encerrada en un círculo rojo arriba se llama la primera línea , que contiene tres partes, separadas por espacios .

1. OBTENER

Este es el método HTTP (método)


2, https://www.sogou.com/

Esta es la URL (localizador único de recursos), también conocida como dirección web, y la función de la URL es identificar ubicación única en Internet .


3, HTTP/1.1

Este es el número de versión.

Solicitud HTTP

1 Comprender las URL




El número de puerto describe qué programa y la ruta jerárquica del archivo es responsable de encontrar qué archivo está bajo la jurisdicción del programa.
La cadena de consulta es la cadena utilizada al obtener recursos, la dirección del servidor es el nombre de dominio y el identificador de fragmento básicamente no se usa ahora.
La información de inicio de sesión ya no se usa, porque habrá una página especial para iniciar sesión al iniciar sesión.



Para dar un ejemplo, por ejemplo, si quiero comer panqueques en la cafetería de la escuela, primero debo determinar en qué cafetería estoy, y también necesito saber en qué ventana comer
. También elige condimentos o algo así.

Aquí, qué cantimplora representa la dirección IP, qué ventana representa el número de puerto, qué guarniciones se agregan representa la ruta con capas y qué condimento representa la
cadena de consulta (organizada por un par clave-valor))


Una URL tiene varias partes aquí, algunas de las cuales se pueden omitir.

https://www.sogou.com/

Lo anterior es para omitir el puerto, después de la omisión, el navegador proporcionará un puerto predeterminado.
El puerto predeterminado es 80 para http y 443 para https.
/ también es una ruta, aquí representa un "directorio raíz", que es el directorio raíz del servidor HTTP.

2 Método de conocimiento




El método describe la semántica de esta solicitud.

La mayoría de los métodos aquí no se usan, solo GET y POST son los más comunes.


Por ejemplo, hay diez concursos en el mundo para talentos literarios, Cao Zijian monopoliza ocho concursos, yo soy dueño de un concurso y todas las personas del mundo comparten un concurso.
Hay diez métodos HTTP en el mundo, el método GET ocupa ocho, el método POST ocupa uno y los métodos restantes se dividen en uno.

2.1 Método OBTENER


GET es el método HTTP más común y, a menudo, se usa para obtener un recurso en el servidor. Ingrese la URL directamente en el navegador,
y el navegador enviará una solicitud GET. Además, las etiquetas como link, img y script en el HTML también activarán la solicitud GET.

Abra Fiddler, visite la página de inicio de Sogou, seleccione Bloc de notas para abrir y observe los resultados de la captura de paquetes.




Una solicitud GET se divide en dos partes, la primera línea y la más difícil .

2.2 Método POST


La más típica es que POST está involucrado al iniciar sesión y saltar, y el otro está cargando archivos.

Use Fiddler para observar el método POST, seleccione Bloc de notas para abrir.



Una solicitud HTTP se puede dividir en cuatro partes:

1. La primera línea

2. Encabezado de solicitud (más difícil)

3. Líneas vacías

4. Cuerpo

Si es una solicitud GET, no hay cuerpo, y si es una solicitud POST, hay cuerpo.

2.2.1 Comprensión de la solicitud "cabecera" (header)


Harder es un grupo de pares clave-valor, cada línea es un par clave-valor, y la clave y el valor están separados por: .
Los pares clave-valor tienen significados especiales.

Host: gitee.com Aquí se describe aproximadamente la dirección y el puerto donde se encuentra el servidor.
La dirección y el puerto del host aquí se utilizan para describir el objetivo de acceso más importante.

Content-Length indica la longitud de los datos en el cuerpo y Content-Type indica el formato de los datos en el cuerpo solicitado.


Si es una solicitud GET, no hay cuerpo, y estos dos campos no existen en la solicitud.Si es una solicitud POST, pero hay un cuerpo, estos dos campos deben estar presentes.

User-Agent se conoce como UA, que describe la versión del navegador y el sistema operativo.

El User-Agent actual se utiliza principalmente para distinguir PC y móvil.

El referente indica la "fuente" de la página actual. Si ingresa directamente la dirección a través de la barra de direcciones o hace clic en favoritos... no habrá referente.

La cookie es un atributo más duro muy importante , que es esencialmente un mecanismo de datos de almacenamiento local proporcionado por los navegadores a las páginas web.
De forma predeterminada, las páginas web no pueden acceder al disco duro de su computadora, por razones de seguridad.

Las cookies tienen un tiempo de caducidad, ¿para qué sirve el tiempo de caducidad?

Algunas computadoras públicas (salas de lectura electrónica de bibliotecas escolares) inician sesión con sus propias cuentas en computadoras públicas.
En este momento, el estado de inicio de sesión se guarda en la cookie. Cuando la siguiente persona la use, es probable que la cookie caduque. iniciado sesión
Cuanto más sensible sea el sitio, más corto será el tiempo de caducidad.

2.2.1.1 Tres preguntas sobre las cookies


1,¿De dónde vienen las cookies?

Los datos en la cookie provienen del servidor, y
el servidor determinará qué almacenar en la cookie del navegador a través de la parte del encabezado de la respuesta HTTP (campo Set-Cookie).


2,¿Dónde se almacenan las cookies?

Se puede considerar que existe en el navegador y en el disco duro.Cuando se almacena la cookie, se subdivide según la dimensión navegador + nombre de dominio.
Diferentes navegadores almacenan sus propias cookies, y diferentes nombres de dominio del mismo navegador corresponden a diferentes cookies.

El contenido de la cookie no es solo un par clave-valor, sino también un tiempo de caducidad. Por ejemplo, después de que muchos sitios web inician sesión una vez, el estado de inicio de sesión se registra automáticamente.


3,¿Adónde van las galletas?

Volviendo al servidor, hay muchos clientes al mismo tiempo.

El lado del cliente usará cookies para guardar el estado intermedio del usuario actual.
Cuando el cliente acceda al navegador, traerá automáticamente el contenido de la cookie a la solicitud, y
el servidor sabrá cómo se ve el cliente ahora. .

2.3 La diferencia entre GET y POST

  • La semántica es diferente: GET generalmente se usa para obtener datos y POST generalmente se usa para enviar datos.
  • El cuerpo de GET generalmente está vacío y los datos a transmitir se transmiten a través de la cadena de consulta.La cadena de consulta de POST generalmente está
    vacía y los datos a transmitir se transmiten a través del cuerpo.
  • Las solicitudes GET son generalmente idempotentes y las solicitudes POST generalmente no son idempotentes. (Si varias solicitudes obtienen el mismo resultado, la solicitud
    se considera idempotente).
  • GET se puede almacenar en caché, POST no se puede almacenar en caché. (Esto también es idempotente)

Por ejemplo, si una vaca come pasto por primera vez, producirá leche; si come pasto por segunda vez, seguirá produciendo leche.
Si el primer pastoreo no exprime lo mismo que el segundo pastoreo, no es idempotente.


En realidad, no existe una diferencia esencial entre GET y POST. En la mayoría de los escenarios, pueden reemplazarse entre sí.
Sin embargo, todavía hay diferencias en los hábitos de uso.

Puede usar GET para enviar y POST para obtener; puede configurar POST para que sea idempotente, pero GET no lo es.

Respuesta HTTP




La respuesta también se divide en cuatro partes.

1. La primera línea : HTTP/1.1 200 OK


2, encabezado


3. Línea vacía : indica la etiqueta final del encabezado


4, cuerpo

1 Conozca el "código de estado"




Un código de estado de 200 OK indica éxito.

404 Not Found significa que el recurso accedido no existe, es decir, no se encuentra en el servidor.

403 Prohibido significa acceso denegado (sin permiso)

302 Mover temporalmente significa redirección (similar a la transferencia de llamadas)
transferencia de llamadas Por ejemplo, si una persona cambia su número de teléfono móvil, alguien marca el número anterior y se transferirá al nuevo número.

500 indica un error interno del servidor (el código del servidor generó una excepción)

El tiempo de espera de la puerta de enlace 504 significa que la respuesta es demasiado larga y el navegador no puede esperar.


La diferencia entre la redirección y el reenvío de solicitudes





La redirección se puede redirigir a recursos externos (saltar a otros sitios web).
El reenvío de solicitudes solo se puede reenviar entre recursos dentro del servidor. Una interacción menos será más eficiente.


Los códigos de estado se pueden dividir en varias categorías:

1** significa esperar, 2** significa éxito, 3** significa redirección, 4** significa error del cliente, 5** significa error del servidor.

2 Reconocer la respuesta "header" (cabecera)


El formato básico del encabezado de respuesta es básicamente el mismo que el del encabezado de solicitud.

Similar a Content-Type , el significado de atributos como Content-Length también es consistente con el significado de la solicitud.

\

Supongo que te gusta

Origin blog.csdn.net/m0_63033419/article/details/129789613
Recomendado
Clasificación