Rumah  >  Artikel  >  hujung hadapan web  >  Cara Mendapatkan Kembali Badan Respons HTTP dalam Sambungan Chrome: Adakah Mungkin?

Cara Mendapatkan Kembali Badan Respons HTTP dalam Sambungan Chrome: Adakah Mungkin?

Susan Sarandon
Susan Sarandonasal
2024-10-24 18:38:35230semak imbas

How to Retrieve HTTP Response Body in Chrome Extensions:  Is it Possible?

Cara Mendapatkan Kembali Badan Respons HTTP dalam Sambungan Chrome

Mendapatkan semula badan respons HTTP dalam skrip latar belakang sambungan Chrome memberikan cabaran. Walaupun sambungan boleh mengakses badan permintaan menggunakan chrome.webRequest.onBeforeRequest, mendapatkan badan respons biasanya tidak mungkin.

Untuk mengatasi pengehadan ini, pendekatan kreatif melibatkan memanfaatkan API chrome.debugger. API ini membenarkan sambungan untuk nyahpepijat dan berinteraksi dengan aktiviti rangkaian penyemak imbas. Berikut ialah pelaksanaan terperinci:

  1. Tetapkan sambungan ke tab semasa menggunakan chrome.tabs.query dan chrome.debugger.attach.
  2. Dayakan penyahpepijatan rangkaian dengan menghantar arahan Network.enable ke tab.
  3. Daftarkan pendengar acara untuk acara Network.responseReceived.
  4. Apabila respons diterima, hantar perintah Network.getResponseBody yang menyatakan requestId daripada parameter acara.
  5. Badan respons akan dikembalikan melalui arahan, membolehkan anda memprosesnya mengikut keperluan.
<code class="javascript">// Attach to the current tab and enable network debugging.
chrome.tabs.query({ currentWindow: true, active: true }, tabs => {
  chrome.debugger.attach({ tabId: tabs[0].id }, '1.0', debuggeeId => {
    chrome.debugger.sendCommand({ tabId: debuggeeId.tabId }, 'Network.enable');
  });
});

// Listen for response received events.
chrome.debugger.onEvent.addListener((debuggeeId, message, params) => {
  if (debuggeeId.tabId !== currentTab.id) return;
  if (message === 'Network.responseReceived') {
    // Get the response body by sending a command.
    chrome.debugger.sendCommand({ tabId: debuggeeId.tabId }, 'Network.getResponseBody', { requestId: params.requestId }, response => {
      // The response body is now available.
      // ... Process the response body ...
    });
  }
});</code>

Kaedah ini membolehkan anda mendapatkan semula badan respons HTTP tanpa memerlukan halaman penyemak imbas tambahan atau perkhidmatan pihak ketiga. Harap maklum bahawa anda boleh menutup sesi penyahpepijatan menggunakan chrome.debugger.detach apabila anda selesai.

Atas ialah kandungan terperinci Cara Mendapatkan Kembali Badan Respons HTTP dalam Sambungan Chrome: Adakah Mungkin?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn