Faire des requêtes HTTP à l'aide des outils de développeur Chrome

206

Existe-t-il un moyen de faire une demande HTTP à l'aide des outils du développeur Chrome sans utiliser un plugin comme POSTER?

leojh
la source
1
Espérez-vous faire des demandes entre domaines ou sur le même domaine dans lequel vous avez ouvert les outils de développement?
Lukas
6
Pour toutes les personnes qui souhaitent cette fonctionnalité - lancez
Ivan Zuzak
1
Tous étaient des réponses utiles, je voulais juste ajouter un outil que je trouve assez utile Advanced Rest Client . Son utilisation peut vous aider à gagner beaucoup de temps à long terme si vous souhaitez effectuer plusieurs demandes d'API.
Sagar Ranglani
6
Firefox est une meilleure option pour cela. faites un clic droit sur la demande et renvoyez-la ou modifiez-la et renvoyez-la.
eusoubrasileiro
@eusoubrasileiro: Merci. Le bouton Modifier et renvoyer dans l'onglet réseau de Firefox pour renvoyer une demande est vraiment une fonctionnalité intéressante. J'espère que quelqu'un soulève une demande pour l'ajouter également dans le chrome
firstpostcommenter

Réponses:

187

Étant donné que l' API Fetch est prise en charge par Chrome (et la plupart des autres navigateurs), il est désormais assez facile de faire des requêtes HTTP à partir de la console devtools.

Pour GET un fichier JSON par exemple:

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

Ou pour POSTER une nouvelle ressource:

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 prend également en charge la nouvelle syntaxe async / wait (même si attend normalement ne peut être utilisé que dans une fonction async):

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

Notez que vos demandes seront soumises à la même politique d'origine , comme toute autre demande HTTP dans le navigateur, donc évitez les demandes d'origine croisée ou assurez-vous que le serveur définit des en-têtes CORS qui autorisent votre demande.

Utiliser un plugin (ancienne réponse)

En plus des suggestions précédemment publiées, j'ai trouvé que le plugin Postman pour Chrome fonctionnait très bien. Il vous permet de définir des en-têtes et des paramètres d'URL, d'utiliser l'authentification HTTP, d'enregistrer la demande que vous exécutez fréquemment, etc.

Christofer Eliasson
la source
3
Étant donné que l'op a accepté une réponse en utilisant Postman: Si vous cliquez avec le bouton droit sur la demande dans les outils de développement et "Copier en tant que cURL", vous pouvez ensuite importer la commande cURL dans Postman pour renvoyer / modifier la demande. Voir: getpostman.com/docs/postman/collections/data_formats -> "Importation en tant que cURL"
dhfsk
1
Comment faire une demande de publication?
Nuhman
7
@Nuhman Fetch prend un deuxième argument où vous pouvez configurer la demandefetch("/echo/json/", { method: "POST", body: data })
Christofer Eliasson
1
Notez qu'il est également possible de copier comme récupérer toute demande de l'historique réseau de Chrome Dev Tools.
Vadzim
1
@mathtick Il y a une modeoption de demande , vous pouvez utiliser: fetch("/echo/json/", { method: 'POST', mode: 'no-cors' }. Notez que le mode: "no-cors" n'autorise qu'un ensemble limité d'en-têtes dans la demande. Plus d'informations sur l'utilisation du fetch et du no-cors
Christofer Eliasson
154

Si vous souhaitez modifier et réémettre une demande que vous avez capturée dans l'onglet Réseau des outils de développement Chrome:

  • Cliquez avec le bouton droit sur Namela demande
  • Sélectionner Copy > Copy as cURL
  • Coller sur la ligne de commande (la commande inclut des cookies et des en-têtes)
  • Modifier la demande au besoin et exécuter

entrez la description de l'image ici

abricot
la source
11
Firefox vous permet de modifier l'appel avant la relecture, mais il n'y a pas une telle option dans Chrome, donc la réponse ci-dessus est la voie à suivre
Tofeeq
3
Avec Chrome 63+, le collage de CURL dans la console ne fonctionne pas.
Ravi Parekh
2
@RaviParekh Je ne pense pas qu'il voulait dire console Chrome, il voulait dire la ligne de commande du système d'exploitation
Korayem
4
La copie comme extraction permet de réémettre des demandes modifiées directement à partir de la console Chrome Dev Tools et est une alternative viable pour ceux qui n'ont pas de cURL ou qui ne souhaitent pas s'en soucier.
Vadzim
1
Mais en utilisant curl, parfois le résultat n'est pas le même. Je suis venu ici pour savoir si je pouvais demander à partir d'un navigateur. Utilisation du javascript du navigateur. Cela me permet de reproduire les problèmes CORS, quelle boucle de mon terminal ne devrait pas m'éclairer.
Garry Dias
32

Je sais, ancien poste ... mais il pourrait être utile de laisser ceci ici.

Les navigateurs modernes prennent désormais en charge l' API Fetch .

Vous pouvez l'utiliser comme ceci:

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: Il effectuera tous les contrôles CORS, car il s'agit d'une amélioration XmlHttpRequest.

tomblue
la source
13

Si votre page Web contient jquery dans votre page, vous pouvez le faire en écrivant sur la console des développeurs Chrome:

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

Sa façon jquery de le faire!

sadaf2605
la source
14
Cela suppose que la page Web utilisera jQuery
mikemaccana
2
N'oubliez pas que cela ne concerne que les GETdemandes, si vous souhaitez effectuer d'autres types de demandes, vous pouvez utiliser$.ajax
aksu
@mikemaccana Vous pouvez charger jQuery dans n'importe quelle page via la console.
nehem
1
Comme çavar script = document.createElement("script"); script.src = "http://ajax.aspnetcdn.com/ajax/jquery/jquery-1.9.0.js"; document.body.appendChild(script);
nehem
1
La réponse @itsneo était juste sur place! Manière de charger jquery si la page en cours d'accès ne l'a pas déjà. Ensuite, vous pouvez utiliser $ .ajax ou équivalent, sans avoir besoin d'un plugin
Renato Chencinski
12

Développer la réponse @dhfsk

Voici mon workflow

  1. Dans Chrome DevTools, cliquez avec le bouton droit sur la demande que vous souhaitez manipuler> Copy as cURL Chrome DevTools Copy en tant que cURL

  2. Postman ouvert

  3. Cliquez Importdans le coin supérieur gauche puisPaste Raw Text Postman Paste Raw Text cURL de Chrome
Korayem
la source
7

Si vous souhaitez effectuer un POST à ​​partir du même domaine, vous pouvez toujours insérer un formulaire dans le DOM à l'aide des outils Developer et soumettre que:

Formulaire inséré dans le document

Craig Curtis
la source
4

J'ai eu la meilleure chance de combiner deux des réponses ci-dessus. Accédez au site dans Chrome, puis recherchez la demande dans l'onglet Réseau de DevTools. Cliquez avec le bouton droit sur la demande et sur Copier, mais sur Copier en tant que récupération au lieu de cURL. Vous pouvez coller le code d'extraction directement dans la console DevTools et le modifier, au lieu d'utiliser la ligne de commande.

Aaron Parke
la source
3
Ne les référez pas comme `` deux réponses ci-dessus '' car cela pourrait changer lors d'un vote ascendant / descendant
Urosh T.
4

Pour obtenir des demandes avec des en-têtes, utilisez ce format.

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

si vous utilisez jquery sur votre site Web, vous pouvez utiliser quelque chose comme ça votre console

$.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
la source
1

En toute simplicité, si vous souhaitez que la demande utilise le même contexte de navigation que la page que vous consultez déjà, faites-le dans la console Chrome:

window.location="https://www.example.com";
Dave Potts
la source
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
la source
1
Vous devez expliquer votre réponse, et pas seulement poster un code aléatoire.
Jakub Muda