Hacer solicitudes HTTP usando las herramientas de desarrollador de Chrome

206

¿Hay alguna manera de hacer una solicitud HTTP usando las herramientas de desarrollador de Chrome sin usar un complemento como POSTER?

leojh
fuente
1
¿Espera realizar solicitudes entre dominios o en el mismo dominio en el que abrió las herramientas de desarrollador?
Lukas
66
Para todas las personas que desean esta función: destaque
Ivan Zuzak
1
Todas fueron respuestas útiles, solo quería agregar una herramienta que me parece bastante útil Advanced Rest Client . Usar esto puede ayudarlo a ahorrar mucho tiempo a largo plazo si va a realizar múltiples solicitudes de API.
Sagar Ranglani
66
Firefox es una mejor opción para esto. simplemente haga clic derecho en la solicitud y vuelva a enviar o edite y vuelva a enviar.
eusoubrasileiro
@eusoubrasileiro: Gracias. El botón Editar y reenviar en la pestaña de red en Firefox para reenviar una solicitud es una característica realmente agradable. Espero que alguien haga una solicitud para agregarlo también en Chrome
comentarista del

Respuestas:

187

Dado que la API de Fetch es compatible con Chrome (y la mayoría de los otros navegadores), ahora es bastante fácil hacer solicitudes HTTP desde la consola de devtools.

Para OBTENER un archivo JSON, por ejemplo:

fetch('https://jsonplaceholder.typicode.com/posts/1')
  .then(res => res.json())
  .then(console.log)

O para PUBLICAR un nuevo recurso:

fetch('https://jsonplaceholder.typicode.com/posts', {
  method: 'POST',
  body: JSON.stringify({
    title: 'foo',
    body: 'bar',
    userId: 1
  }),
  headers: {
    'Content-type': 'application/json; charset=UTF-8'
  }
})
.then(res => res.json())
.then(console.log)

Chrome Devtools también es compatible con la nueva sintaxis asíncrona / espera (aunque esperar normalmente solo se puede usar dentro de una función asíncrona):

const response = await fetch('https://jsonplaceholder.typicode.com/posts/1')
console.log(await response.json())

Tenga en cuenta que sus solicitudes estarán sujetas a la política del mismo origen , al igual que cualquier otra solicitud HTTP en el navegador, por lo tanto, evite las solicitudes de origen cruzado o asegúrese de que el servidor establezca encabezados CORS que permitan su solicitud.

Usando un complemento (respuesta anterior)

Además de las sugerencias publicadas anteriormente, he encontrado que el complemento Postman para Chrome funciona muy bien. Le permite establecer encabezados y parámetros de URL, usar autenticación HTTP, guardar solicitudes que ejecuta con frecuencia, etc.

Christofer Eliasson
fuente
3
Dado que el operador aceptó una respuesta con Postman: Si hace clic con el botón derecho en la solicitud en las herramientas de desarrollo y "Copiar como cURL", puede importar el comando cURL en Postman para reenviar / modificar la solicitud. Consulte: getpostman.com/docs/postman/collections/data_formats -> "Importar como cURL"
dhfsk
1
¿Cómo hacer una solicitud de publicación?
Nuhman
77
@Nuhman Fetch toma un segundo argumento donde puede configurar la solicitudfetch("/echo/json/", { method: "POST", body: data })
Christofer Eliasson
1
Tenga en cuenta que también es posible copiar y recuperar cualquier solicitud del historial de red de Chrome Dev Tools.
Vadzim
1
@mathtick Hay una modeopción de petición se puede utilizar: fetch("/echo/json/", { method: 'POST', mode: 'no-cors' }. Tenga en cuenta que el modo: "no-cors" solo permite un conjunto limitado de encabezados en la solicitud. Más información sobre el uso de fetch y no-cors
Christofer Eliasson
154

Si desea editar y volver a emitir una solicitud que ha capturado en la pestaña Red de Herramientas para desarrolladores de Chrome:

  • Haga clic derecho en Namela solicitud
  • Seleccione Copy > Copy as cURL
  • Pegar en la línea de comando (el comando incluye cookies y encabezados)
  • Edite la solicitud según sea necesario y ejecútela

ingrese la descripción de la imagen aquí

albaricoque
fuente
11
Firefox le permite editar la llamada antes de volver a reproducirla, pero no existe tal opción en Chrome, por lo que la respuesta anterior es el camino a seguir
Tofeeq
3
Con Chrome 63+, pegar CURL en la consola no funciona.
Ravi Parekh
2
@RaviParekh No creo que se refiriera a la consola Chrome, se refería a la línea de comandos del sistema operativo
Korayem,
44
Copiar como recuperación permite volver a emitir solicitudes alteradas directamente desde la consola de Chrome Dev Tools y es una alternativa viable para aquellos que no tienen cURL o no desean molestarse con ella.
Vadzim
1
Pero usando curl, a veces el resultado no es el mismo. Vine aquí para saber si podía solicitarlo desde el navegador. Usando el javascript del navegador. Me permite reproducir problemas CORS, lo que un rizo desde mi terminal no debería iluminarme.
Garry Dias
32

Lo sé, publicación anterior ... pero podría ser útil dejar esto aquí.

Los navegadores modernos ahora son compatibles con la API Fetch .

Puedes usarlo así:

fetch("<url>")
    .then(data => data.json()) // could be .text() or .blob() depending on the data you are expecting
    .then(console.log); // print your data

ps: realizará todas las comprobaciones CORS, ya que es una mejora XmlHttpRequest.

Tomblue
fuente
13

Si su página web tiene jquery en su página, puede hacerlo escribiendo en la consola de desarrolladores de Chrome:

$.get(
    "somepage.php",
    {paramOne : 1, paramX : 'abc'},
    function(data) {
       alert('page content: ' + data);
    }
);

¡Es una forma jquery de hacerlo!

sadaf2605
fuente
14
Esto supone que la página web usará jQuery
mikemaccana
2
Recuerde que esto es solo para GETsolicitudes, si desea hacer otro tipo de solicitudes, puede hacer uso de$.ajax
aksu
@mikemaccana Puede cargar jQuery en cualquier página a través de la consola.
nehem
1
Me gusta estovar script = document.createElement("script"); script.src = "http://ajax.aspnetcdn.com/ajax/jquery/jquery-1.9.0.js"; document.body.appendChild(script);
nehem
1
¡La respuesta de @itsneo fue correcta! Manera de cargar jquery si la página a la que se accede aún no la tiene. Entonces puede usar $ .ajax o equivalente, sin necesidad de un complemento
Renato Chencinski
12

Ampliando en @dhfsk respuesta

Aquí está mi flujo de trabajo

  1. Desde Chrome DevTools, haga clic con el botón derecho en la solicitud que desea manipular> Copy as cURL Chrome DevTools Copy como cURL

  2. Cartero abierto

  3. Haga clic Importen la esquina superior izquierda y luegoPaste Raw Text Cartero pegar texto sin formato cURL de Chrome
Korayem
fuente
7

Si desea hacer una POST desde el mismo dominio, siempre puede insertar un formulario en el DOM utilizando las herramientas de desarrollador y enviar que:

Formulario insertado en el documento

Craig Curtis
fuente
4

Tuve la mejor suerte combinando dos de las respuestas anteriores. Navegue al sitio en Chrome, luego busque la solicitud en la pestaña Red de DevTools. Haga clic derecho en la solicitud y Copiar, pero Copiar como recuperación en lugar de cURL. Puede pegar el código de búsqueda directamente en la consola de DevTools y editarlo, en lugar de usar la línea de comando.

Aaron Parke
fuente
3
No los refiera como 'dos ​​respuestas anteriores' porque eso podría cambiar al votar hacia arriba / hacia abajo
Urosh T.
4

Para OBTENER solicitudes con encabezados, use este formato.

   fetch('http://example.com', {
      method: 'GET',
      headers: new Headers({
               'Content-Type': 'application/json',
               'someheader': 'headervalue'
               })
    })
    .then(res => res.json())
    .then(console.log)
Nirojan Selvanathan
fuente
2

si usa jquery en su sitio web, puede usar algo como esto en su consola

$.post(
    'dom/data-home.php',
    {
    type : "home", id : "0"
    },function(data){
        console.log(data)
    })
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>

Nazor
fuente
1

En pocas palabras, si desea que la solicitud use el mismo contexto de navegación que la página que ya está viendo, en la consola de Chrome simplemente haga lo siguiente:

window.location="https://www.example.com";
Dave Potts
fuente
1

$.post(
    'dom/data-home.php',
    {
    type : "home", id : "0"
    },function(data){
        console.log(data)
    })
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>

Fady sadakah
fuente
1
Debe explicar su respuesta, no solo publicar un código aleatorio.
Jakub Muda