registros del foso del cartero
1. Captura de paquetes de Charles, reproducción de cartero
Artículo de referencia: copie la dirección de solicitud de Charles y otras herramientas de captura de paquetes como CURL y péguela en Postman para generar directamente la solicitud de interfaz
1. Solicitud de clic derecho -> Copiar solicitud de cURL. Obtenga los datos de la solicitud en formato curl
2. Luego vaya a cartero para importar los datos de curl
3. Luego péguelos en Texto sin formato
El último cartero solicitud Fue construido.
2. La solicitud del cartero falla, la solicitud curl tiene éxito
Mi problema es que la solicitud construida por el cartero siempre reporta 400 al realizar una solicitud directa con el cartero, pero se puede acceder correctamente a través de rizo.
El problema radica en el encabezado. Descubrí que no hay ningún host en el encabezado de la solicitud de hostman y no hay ningún host en el comando curl generado. Entonces, ¿por qué falla la solicitud del cartero pero curl tiene éxito para ambas solicitudes sin un campo de host?
Adivina: ¿Curl agregará automáticamente el nombre de dominio como host? No he recibido una respuesta en línea. La solución es agregar host al encabezado de postman, y luego tanto postman como curl podrán realizar la solicitud con éxito.
3. El mismo comando Curl y la solicitud POST tienen diferentes solicitudes de diferentes clientes.
Antecedentes: el mismo comando curl, iniciado por el contenedor de la nube y el mac local, no tiene ningún problema con la solicitud de obtención. Sin embargo, para la solicitud POST, el mac local está bien y el contenedor de la nube se puede iniciar para encontrar el servicio, pero el cuerpo de la solicitud posterior se pierde, lo que provoca que falle el procesamiento de Spring MVC.
Proceso de descubrimiento:
1. El contenedor de la nube inicia una solicitud de publicación y le indica que falta el cuerpo. Luego intente iniciarlo localmente y la solicitud estará bien
2. Utilice curl -v para probar el proceso detallado de la solicitud para comparar. La mac local resuelve el puerto 443 en ip:255.96, mientras que la instancia del contenedor resuelve el puerto 443 en 199.49. Significa que cuando dos clientes inician solicitudes de nombres de dominio, el servidor nginx que analizan no es el mismo.
El problema es obvio. El nginx al que accede la instancia del contenedor pierde la información del cuerpo al reenviar la solicitud de publicación. Como resultado, todas las solicitudes de publicación no pueden obtener el cuerpo después de llegar a Spring MVC.
Solución: Puede consultar /m/view.php?aid=1514. La configuración de nginx ha sido modificada y sometida a operación y mantenimiento.
Otra solución: use postman para obtener curl y agregue \ de forma predeterminada después de cada encabezado. Algunos clientes no reconocen este formato. Por ejemplo: cliente iterm y linux de mac