XHR krom / firefox vb.


144

Tarayıcımda yapılan bir XHR isteğini değiştirmenin ve sonra tekrar oynatmanın bir yolunu arıyorum. Diyelim ki tarayıcımda tam bir POST isteğim var ve değiştirmek istediğim tek şey küçük bir değer ve sonra tekrar oynat. Bu, doğrudan tarayıcıda yapılması çok daha kolay ve hızlı olacaktır.

Biraz google'landım ve bunu Chrome veya Firefox'ta yapmanın bir yolunu bulamadım. Bu tarayıcılardan birinde ya da başka bir tarayıcıda yapmanın bir yolu var mı?


Eğer "Tekrar XHR" Chrome'da çalışmalarını not değil fark sonra buraya ulaşırsanız o önkontroller ile vakaları ( OPTIONS) Üzerinde 'tekrarını' tıklamanız gerekiyor talepleri uçuş öncesi isteği - değil gerçek nihai talep.
Janaka Bandara

Yanıtlar:


181

Chrome:

  • Devtools'un Ağ panelinde sağ tıklayın ve cURL olarak kopyala'yı seçin
  • İsteği yapıştırın / düzenleyin ve ardından curlkomutu aldığınız varsayılarak bir terminalden gönderin

Yakalamaya bakın:

resim açıklamasını buraya girin

Alternatif olarak ve isteği bir web sayfası bağlamında göndermeniz gerektiğinde , "Getirme olarak kopyala" yı seçin ve içeriği javascript konsol panelinden düzenleyin ve gönderin.


Firefox:

Firefox, XHR'yi doğrudan Ağ panelinden düzenlemeye ve yeniden göndermeye izin verir. Aşağıdaki çekim Firefox 36'dan alınmıştır:

resim açıklamasını buraya girin


Aslında aradığım şey bu olabilir. CURL çağrısını kopyalayabileceğimi biliyordum, ancak doğrulanacağım için doğrudan terminalimden çalıştıramadım. Ama doğrudan Chorme için terminal inşa ile, çağrı tarayıcı "içinde" yapılır varsayalım. Eğer öyleyse, bu anlaşmayı imzalamalıdır.
madsobel

14
Cevaba

Küçük numara: cURL çıktısını tarayıcıda görmek istiyorsanız, bunu CLI'de çalıştırın ve curl ... > preview.htmlardından dosyayı tarayıcıda açın.
afilina

@afilina bu işlemi daha da otomatik hale getirmek için macOS'a ekleyebilir && open preview.htmlve dosya istekten hemen sonra açılır
CodeBrauer

2
Bu durumda, Firefox çok daha iyi bir iş çıkarıyor!
jpenna

41

Chrome'un artık 67 sürümünde Getirme olarak kopyala özelliği var :

Getirme olarak kopyala

Bir ağ isteğine sağ tıklayın ve ardından bu isteğe ilişkin eşdeğer kodu panonuza kopyalamak için Kopyala> Getirme Gibi Kopyala'yı seçin fetch().

https://developers.google.com/web/updates/2018/04/devtools#fetch

Örnek çıktı:

fetch("https://stackoverflow.com/posts/validate-body", {
  credentials: "include",
  headers: {},
  referrer: "https://stackoverflow.com/",
  referrerPolicy: "origin",
  body:
    "body=Chrome+now+has+_Copy+as+fetch_+in+version+67%3A%0A%0A%3E+Copy+as+fetch%0ARight-click+a+network+request+then+select+**Copy+%3E+Copy+As+Fetch**+to+copy+the+%60fetch()%60-equivalent+code+for+that+request+to+your+clipboard.%0A%0A&oldBody=&isQuestion=false",
  method: "POST",
  mode: "cors"
});

Aradaki fark, cURL Olarak Kopyala seçeneğinin tüm istek başlıklarını (Çerez ve Kabul Et gibi) içermesi ve isteği Chrome dışında yeniden yürütmek için uygun olmasıdır. fetch()Kod aynı tarayıcı içine yeniden oynatmak için uygundur.


6
Bunun için teşekkür ederim. Merak eden herkes için - fetchkomutu doğrudan Chrome konsoluna yapıştırabilir ve isteği yeniden oynatabilirsiniz .
Eric Kigathi

7
Getirme işleminden sonra, getirme işleminin döndürdüğü sözü çözümlemek ve yanıt gövdesini görüntülemek için kullanabilirsiniz (JSON olduğu varsayılarak).then(r => r.json()).then(json => console.log(json))
POSIX uyumlu

1
Josh Lee, POSIX uyumlu ipuçlarının iyi olduğunu ve bu yanıta eklenebileceğini düşünüyorum.
Nabi KAZ

@ POSIX uyumlu iyi ipuçları, Aklımda tutabilecek daha küçük bir komut var mı ?!
Nabi KAZ

Getirme kodunu nereye yapıştıracağını merak edenler için: yapıştırın ve konsolda değiştirin
dotista2008

20

İki önerim:

  1. Chrome'un Postacı eklentisi + Postacı Durdurucu Eklentisi . Daha fazla bilgi: Postacı Yakalama Talepleri Dokümanlar

  2. Windows'daysanız, Telerik'in Fiddler'ı bir seçenektir. Http isteklerini yeniden yürütmek için bir besteci seçeneği vardır ve ücretsizdir.


8
Postman + Interceptor krom uzantısını kullanmaya başladığımdan beri Fiddler'a ihtiyacım olmadı.
threadster

3
Chrome için FYI Postman uygulaması artık kullanımdan kaldırıldı ve bunu bağımsız sürümde ayarlamak biraz daha zor
yefrem

sadece ne aradığını çok teşekkürler!
Mohammad


4

Firefox için sorun kendi kendine çözüldü. "Düzenle ve Yeniden Gönder" özelliği uygulanmıştır.

Chrome Tamper uzantısı için hile yapıyor gibi görünüyor.


Hangi artık güncellenmez ve oldukça kötü değerlendirmeleri vardır. En iyi alternatif, bu tür iş imoları için Firefox kullanmaktır.
T3rm1

Evet. Yeniden gönderme durumu oldukça hızlı değişiyor gibi görünüyor. Artık Chrome'un XHR istekleri için Yeniden Gönder istekleri var, ancak düzenlemeye izin vermiyor.
Jari Turkia

Düzenleme ve Yeniden Gönderme sırasında çerezlerde CSRF belirteciyle ilgili sorun olduğu anlaşılan Firefox sürüm 76'ya dikkat edin. Ver 37 ile denendi, iyi çalıştı, ancak ver76 ile CSRF token doğrulama sorunu var.
puppyceceyoyo

1

5 yıl geçti ve bu temel gereksinim Chrome geliştiricileri tarafından göz ardı edilmedi.
Firefox'taki gibi verileri düzenlemek için hiçbir yöntem sunmasalar da, tam bir XHR tekrarını sunarlar.
Bu, ajax çağrılarının hata ayıklamasını sağlar. "Replay XHR" tüm aktarımı tekrarlar.
resim açıklamasını buraya girin


0

Yukarıda belirtildiği gibi bunu yapmanın birkaç yolu vardır, ancak benim deneyimime göre, bir XHR isteğini ve yeniden göndermeyi değiştirmenin en iyi yolu, isteği cURL isteği olarak kopyalamak için krom dev araçlarını kullanmaktır (ağ sekmesindeki isteğe sağ tıklayın) ) ve yalnızca Postacı uygulamasına aktarma (sol üstteki dev içe aktarma düğmesi).


0

3. taraf uzantıları yüklemenize gerek yok!

Tarayıcı yer imi olarak ekleyebileceğiniz ve daha sonra istekleri izlemek ve değiştirmek için herhangi bir sitede etkinleştirebileceğiniz javascript-snippet'i vardır . Şöyle görünüyor:

resim açıklamasını buraya girin

Daha fazla talimat için github sayfasını inceleyin.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.