Przesyłanie żądań HTTP za pomocą narzędzi Chrome dla programistów


206

Czy istnieje sposób na wysłanie żądania HTTP za pomocą narzędzi Chrome dla programistów bez użycia wtyczki takiej jak POSTER?


1
Czy chcesz składać wnioski między domenami lub w tej samej domenie, w której otworzyłeś narzędzia programistyczne?
Lukas

6
Dla wszystkich osób, które chcą tej funkcji - oznacz to Chromium gwiazdką: code.google.com/p/chromium/issues/…
Ivan Zuzak

1
Wszystkie były użyteczne odpowiedzi, chciałem tylko dodać narzędzie, które uważam za bardzo przydatne Advanced Rest Client . Korzystanie z tego może pomóc zaoszczędzić dużo czasu na dłuższą metę, jeśli zamierzasz wysyłać wiele żądań API.
Sagar Ranglani,

6
Firefox jest lepszą opcją do tego. wystarczy kliknąć prawym przyciskiem myszy żądanie i wysłać ponownie lub edytować i ponownie wysłać.
eusoubrasileiro

@eusoubrasileiro: Dzięki. Przycisk Edytuj i wyślij ponownie na karcie sieci w przeglądarce Firefox, aby ponownie wysłać żądanie, jest naprawdę fajną funkcją. Mam nadzieję, że ktoś
zgłosi

Odpowiedzi:


186

Ponieważ interfejs API Fetch jest obsługiwany przez Chrome (i większość innych przeglądarek), wysyłanie żądań HTTP z konsoli devtools jest teraz dość łatwe.

Aby GET plik JSON, na przykład:

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

Lub POST nowego zasobu:

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)

Devtools Chrome faktycznie obsługują także nową składnię asynchroniczną / oczekującą (nawet jeśli normalnie funkcja oczekująca może być używana tylko w funkcji asynchronicznej):

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

Zauważ, że twoje żądania będą podlegały zasadom tego samego pochodzenia , tak jak każde inne żądanie HTTP w przeglądarce, więc albo unikaj żądań krzyżowych lub upewnij się, że serwer ustawia nagłówki CORS, które zezwalają na twoje żądanie.

Korzystanie z wtyczki (stara odpowiedź)

Jako dodatek do wcześniej opublikowanych sugestii zauważyłem, że wtyczka Postman do Chrome działa bardzo dobrze. Pozwala ustawić nagłówki i parametry URL, używać uwierzytelniania HTTP, zapisywać często wykonywane żądania i tak dalej.


3
Ponieważ operacja zaakceptowała odpowiedź za pomocą Listonosza: Jeśli klikniesz prawym przyciskiem myszy żądanie w narzędziach programistycznych i „Kopiuj jako cURL”, możesz następnie zaimportować polecenie cURL do Postmana, aby ponownie wysłać / zmienić żądanie. Zobacz: getpostman.com/docs/postman/collections/data_formats -> „Importowanie jako cURL”
dhfsk

1
Jak złożyć wniosek o wpis?
Nuhman,

7
@Nuhman Fetch bierze drugi argument, w którym można skonfigurować żądaniefetch("/echo/json/", { method: "POST", body: data })
Christofer Eliasson

1
Pamiętaj, że można również skopiować jako pobranie dowolnego żądania z historii sieci Chrome Dev Tools.
Vadzim

1
@mathtick Jest modeopcja kupna można użyć: fetch("/echo/json/", { method: 'POST', mode: 'no-cors' }. Zauważ, że tryb: „no-cors” zezwala tylko na ograniczony zestaw nagłówków w żądaniu. Więcej informacji o korzystaniu z funkcji pobierania i no-cors
Christofer Eliasson

154

Jeśli chcesz edytować i ponownie wysłać żądanie przechwycone na karcie Sieć Narzędzi programistów Chrome:

  • Kliknij Nameżądanie prawym przyciskiem myszy
  • Wybierz Copy > Copy as cURL
  • Wklej do wiersza poleceń (polecenie zawiera pliki cookie i nagłówki)
  • Edytuj żądanie w razie potrzeby i uruchom

wprowadź opis zdjęcia tutaj


11
Firefox pozwala edytować rozmowę przed powtórzeniem, ale nie ma takiej opcji w chrome, więc nad odpowiedzią jest droga
Tofeeq

3
W przypadku Chrome 63+ wklejanie CURL w konsoli nie działa.
Ravi Parekh

2
@RaviParekh Nie sądzę, że miał na myśli konsolę Chrome, miał na myśli wiersz poleceń systemu operacyjnego
Korayem,

4
Kopiuj jako pobieranie pozwala ponownie wystawiać zmienione żądania bezpośrednio z konsoli Chrome Dev Tools i jest realną alternatywą dla tych, którzy nie mają cURL lub nie chcą się tym przejmować.
Vadzim

1
Ale używając curl, czasami wynik nie jest taki sam. Przybyłem tutaj, aby wiedzieć, czy mogę poprosić o przeglądarkę. Korzystanie z javascript przeglądarki. Pozwala mi odtwarzać problemy CORS, czego nie powinien oświecić zwinięcie z mojego terminala.
Garry Dias,

32

Wiem, stary post ... ale zostawienie tego tutaj może być pomocne.

Nowoczesne przeglądarki obsługują teraz interfejs API Fetch .

Możesz użyć tego w następujący sposób:

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: Wykona wszystkie kontrole CORS, ponieważ jest to poprawione XmlHttpRequest.


13

Jeśli twoja strona zawiera jquery na twojej stronie, możesz to zrobić pisząc na konsoli programistów chrome:

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

Jego jquery to zrobić!


14
Zakłada się, że strona internetowa użyje jQuery
mikemaccana

2
Pamiętaj, że jest to tylko w przypadku GETwniosków, jeśli chcesz robić inne rodzaje wniosków, możesz skorzystać z$.ajax
aksu 16.04.16

@mikemaccana Możesz załadować jQuery na dowolną stronę za pomocą konsoli.
nehem

1
W ten sposóbvar script = document.createElement("script"); script.src = "http://ajax.aspnetcdn.com/ajax/jquery/jquery-1.9.0.js"; document.body.appendChild(script);
nehem

1
Odpowiedź @itsneo była na miejscu! Sposób wczytywania jquery, jeśli strona, do której uzyskiwany jest dostęp, jeszcze jej nie ma. Następnie możesz użyć $ .ajax lub ekwiwalentu bez potrzeby używania wtyczki
Renato Chencinski

12

Rozwijanie odpowiedzi @dhfsk

Oto mój przepływ pracy

  1. W Chrome DevTools kliknij prawym przyciskiem myszy żądanie, którym chcesz manipulować> Copy as cURL Chrome DevTools Kopiuj jako cURL

  2. Otwórz listonosza

  3. Kliknij Importw lewym górnym roguPaste Raw Text Listonosz Wklej surowy tekst cURL z Chrome

7

Jeśli chcesz wykonać test POST z tej samej domeny, zawsze możesz wstawić formularz do DOM przy użyciu narzędzi programistycznych i przesłać:

Wstawiony formularz do dokumentu


4

Miałem największe szczęście, łącząc dwie powyższe odpowiedzi. Przejdź do witryny w Chrome, a następnie znajdź żądanie na karcie Sieć w DevTools. Kliknij prawym przyciskiem myszy żądanie i Kopiuj, ale Kopiuj jako pobieranie zamiast cURL. Możesz wkleić kod pobierania bezpośrednio do konsoli DevTools i edytować go, zamiast używać wiersza poleceń.


3
Nie traktuj ich jako „dwóch odpowiedzi powyżej”, ponieważ może to ulec zmianie podczas głosowania w górę / w dół
Urosh T.

4

Aby uzyskać żądania z nagłówkami, użyj tego formatu.

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

2

jeśli używasz jquery na swojej stronie internetowej, możesz użyć czegoś takiego do konsoli

$.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>


1

Upraszczając, jeśli chcesz, aby żądanie korzystało z tego samego kontekstu przeglądania, co strona, na którą już patrzysz, w konsoli Chrome po prostu wykonaj:

window.location="https://www.example.com";

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>


1
Powinieneś wyjaśnić swoją odpowiedź, a nie tylko opublikować losowy kod.
Jakub Muda,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.