>  기사  >  웹 프론트엔드  >  Chrome 확장 프로그램에서 HTTP 응답 본문에 어떻게 액세스할 수 있나요?

Chrome 확장 프로그램에서 HTTP 응답 본문에 어떻게 액세스할 수 있나요?

Patricia Arquette
Patricia Arquette원래의
2024-10-25 09:21:02720검색

How Can You Access HTTP Response Bodies in Chrome Extensions?

Chrome 확장 프로그램에서 HTTP 응답 본문을 해독하는 방법

브라우저 개발에서 HTTP 응답 본문에 액세스하는 것은 특히 내에서 작업할 때 문제가 될 수 있습니다. Chrome 확장 프로그램 배경 스크립트. 'chrome.webRequest.onBeforeRequest' 이벤트를 사용하여 HTTP 요청 본문에 액세스할 수 있지만 응답 본문을 검색하려면 더 복잡한 접근 방식이 필요합니다.

참조된 스택 오버플로 스레드 "Chrome HTTP 응답을 읽는 확장 프로그램'에는 'chrome.devtools.network' API를 활용하는 작업이 포함됩니다. 현재 탭에 디버거를 연결하고 디버거 내에서 네트워크를 활성화하면 "Network.responseReceived" 이벤트를 수신할 수 있게 됩니다. 이 이벤트가 트리거되면 'chrome.debugger.sendCommand' 메소드를 사용하여 특정 요청 ID에 대한 응답 본문을 검색할 수 있습니다.

다음은 이 접근 방식을 보여주는 예제 스니펫입니다.

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

이 방법은 응답 헤더와 응답 본문 자체 모두에 대한 액세스를 제공하므로 상당히 포괄적입니다. 그러나 디버거 세션을 생성하고 이를 현재 탭에 연결하는 과정이 포함되므로 복잡성이나 성능 고려 사항이 추가로 발생할 수 있습니다.

위 내용은 Chrome 확장 프로그램에서 HTTP 응답 본문에 어떻게 액세스할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.