2011-05-10 8 views
38

Necesito probar algún código de aplicación cliente que he escrito para probar su manejo de varios códigos de estado devueltos en una respuesta HTTP desde un servidor web.¿Cómo uso Fiddler para modificar el código de estado en una respuesta HTTP?

Tengo Fiddler 2 (Web Debugging Proxy) instalado y creo que hay una manera de modificar las respuestas utilizando esta aplicación, pero estoy luchando por saber cómo hacerlo. Esta sería la forma más conveniente, ya que me permitiría dejar el código del cliente y del servidor sin modificaciones.

¿Alguien puede ayudar ya que me gustaría interceptar la respuesta HTTP que se envía del servidor al cliente y modificar el código de estado antes de que llegue al cliente?

Cualquier consejo sería muy apreciado.

+0

Gracias por el enlace EricLaw. Anteriormente había estado en esa página en el trabajo, pero no pude ver los videos en ese momento. En casa, parece que puedo ver estos y encontré que son de gran ayuda. Fiddler sin duda es una bestia poderosa! – w5m

+0

Vea también http://stackoverflow.com/a/1935570/67824 –

+1

@EricLaw: El enlace actualizado puede ser: http://www.telerik.com/videos/fiddler/tag/tips-tricks –

Respuesta

65

Ok, así que supongo que ya puede supervisar el tráfico de su cliente/servidor. Lo que quiere hacer es establecer un punto de interrupción en la respuesta y luego manipularlo antes de enviarlo al cliente.

Aquí hay un par de maneras diferentes de hacerlo:

  1. Reglas> Automática Breakpoints> Después Respuestas
  2. En el cuadro quickexec (el cuadro negro en la parte inferior) de tipo "bpafter yourpage.svc" . Ahora Fiddler se detendrá en un punto de interrupción antes de todas las solicitudes a cualquier URL que contenga "yourpage.svc". Escriba "bpafter" sin parámetros para borrar el punto de interrupción.
  3. Modifique mediante programación la respuesta utilizando FiddlerScript. La mejor documentación para FiddlerScript está en el sitio oficial: http://www.fiddler2.com/Fiddler/dev/

Una vez que tenga una respuesta se detuvo en el punto de interrupción, simplemente haga doble clic en él para abrirlo en los inspectores. Tienes un par de opciones ahora:

  1. Justo al lado del botón Ejecutar verde para Finalización (que se hace clic para enviar la respuesta) hay un menú desplegable que permite elegir algunos tipos de respuesta por defecto.
  2. O, en el inspector de encabezados, cambie el mensaje de respuesta & en el cuadro de texto en la parte superior.
  3. O bien, haga clic en el inspector "Crudo" y lía con la respuesta original para hacer cosas arbitrarias. También es una buena manera de ver lo que su cliente cuando recibe una respuesta con formato incorrecto, lo que es probable que probar accidentalmente :)
+1

Absolutamente fantástico, eso era exactamente lo que buscaba. Muchas gracias chrisbro! – w5m

+0

@chrisbro Excelente +5 – MastAvalons

+0

Gracias un montón, ayudó. – Ayusman

3

Otra alternativa es utilizar AutoResponder pestaña de Fiddler (en el panel de la derecha) . Esto le permite capturar una solicitud a cualquier URI que coincida con una cadena y que sirva una respuesta "enlatada" desde un archivo. El archivo puede contener tanto encabezados como carga útil. La ventaja de este enfoque es que no tiene que escribir FiddlerScript y no tiene que manejar cada solicitud manualmente a través de un punto de interrupción.

Debería establecer la regla en Fiddler como se muestra a continuación (asegúrese de habilitar solicitudes sin coincidencia passthrough de lo contrario, todas las demás solicitudes http fallarán).

Fiddler autoresponder setup En este ejemplo, cualquier solicitud cuyo URI incluya "fooBar" obtendrá la respuesta enlatada.El formato del archivo variará dependiendo de sus APIs (se puede utilizar el navegador para interceptar una respuesta "real" y se base en eso), pero la mía parecía ser el siguiente:

HTTP/1.1 409 Conflict 
Server: Apache-Coyote/1.1 
X-Powered-By: Servlet 2.5; JBoss-5.0/JBossWeb-2.1 
Access-Control-Allow-Origin: * 
Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS 
Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept, Authorization 
Access-Control-Max-Age: 86400 
Content-Type: application/vnd.api+json 
Content-Length: 149 
Date: Tue, 28 Mar 2017 10:03:29 GMT 

{"errors":[{"code":"OutOfStock","detail":"Item not in stock","source":{"lineId":{"type":"Order line Number","id":"1"}},"meta":{"availableStock":0}}]} 

encontré que necesitaba una retorno de carro al final de la última línea (es decir, después del json), y que el encabezado Content-Length tenía que coincidir con el número de caracteres en el json; de lo contrario, la aplicación web se bloqueaba. Su experiencia puede ser diferente.

+0

Eso es realmente útil saber, gracias por compartir. – w5m

+0

Vale la pena señalar que puede restringir la regla de respuesta automática para que solo se active para ciertos métodos http. Por ejemplo: para devolver la respuesta enlatada para un POST pero permitir que un PATCH pase sin tocar la regla anterior, se verá como "METHOD: POST fooBar". – russthegibbon

Cuestiones relacionadas