Rumah  >  Artikel  >  hujung hadapan web  >  Bagaimanakah Anda Boleh Mengakses Badan Respons HTTP dalam Sambungan Chrome?

Bagaimanakah Anda Boleh Mengakses Badan Respons HTTP dalam Sambungan Chrome?

Patricia Arquette
Patricia Arquetteasal
2024-10-25 09:21:02720semak imbas

How Can You Access HTTP Response Bodies in Chrome Extensions?

Cara Menghurai Badan Respons HTTP dalam Sambungan Chrome

Dalam pembangunan penyemak imbas, mengakses badan respons HTTP boleh menimbulkan cabaran, terutamanya apabila bekerja dalam Skrip latar belakang sambungan Chrome. Walaupun mungkin untuk mengakses badan permintaan HTTP menggunakan acara 'chrome.webRequest.onBeforeRequest', mendapatkan semula badan tindak balas memerlukan pendekatan yang lebih rumit.

Satu penyelesaian yang berpotensi, seperti yang dinyatakan dalam urutan Stack Overflow yang dirujuk "Chrome sambungan untuk membaca respons HTTP," melibatkan penggunaan API 'chrome.devtools.network'. Dengan melampirkan penyahpepijat pada tab semasa dan mendayakan Rangkaian dalam penyahpepijat, ia menjadi mungkin untuk mendengar acara "Network.responseReceived". Apabila peristiwa ini dicetuskan, anda boleh menggunakan kaedah 'chrome.debugger.sendCommand' untuk mendapatkan semula badan respons untuk ID permintaan tertentu.

Berikut ialah contoh coretan yang menunjukkan pendekatan ini:

<code class="javascript">var currentTab;
var version = "1.0";

chrome.tabs.query(
  {
    currentWindow: true,
    active: true
  },
  function(tabArray) {
    currentTab = tabArray[0];
    chrome.debugger.attach({
      tabId: currentTab.id
    }, version, onAttach.bind(null, currentTab.id));
  }
);

function onAttach(tabId) {
  chrome.debugger.sendCommand({
    tabId: tabId
  }, "Network.enable");

  chrome.debugger.onEvent.addListener(allEventHandler);
}

function allEventHandler(debuggeeId, message, params) {
  if (currentTab.id != debuggeeId.tabId) {
    return;
  }

  if (message == "Network.responseReceived") {
    chrome.debugger.sendCommand({
      tabId: debuggeeId.tabId
    }, "Network.getResponseBody", {
      "requestId": params.requestId
    }, function(response) {
      // You get the response body here!
      // You can close the debugger tips by:
      chrome.debugger.detach(debuggeeId);
    });
  }
}</code>

Kaedah ini agak menyeluruh, menawarkan akses kepada kedua-dua pengepala respons dan badan respons itu sendiri. Walau bagaimanapun, ia melibatkan membuat sesi penyahpepijat dan melampirkannya pada tab semasa, yang mungkin memperkenalkan kerumitan tambahan atau pertimbangan prestasi.

Atas ialah kandungan terperinci Bagaimanakah Anda Boleh Mengakses Badan Respons HTTP dalam Sambungan Chrome?. 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