Chrome 확장 프로그램에서 HTTP 응답 헤더를 캡처하는 방법은 무엇입니까?

Susan Sarandon
풀어 주다: 2024-11-08 06:09:01
원래의
992명이 탐색했습니다.

How to Capture HTTP Response Headers in Chrome Extensions?

Chrome 확장 프로그램에서 HTTP 응답 헤더를 읽는 방법

원본 게시물:

이 질문은 Chrome 확장 프로그램을 확장하려고 합니다. 응답 헤더를 검사할 수 있도록 요청 헤더를 조작하는 것입니다. 사용자가 Chrome 확장 API에서 관련 API를 찾을 수 없습니다.

해결책:

HTTP 응답을 캡처하려면 DOM에 스크립트를 삽입해야 합니다. 다음 코드는 이 접근 방식을 보여줍니다.

// inject.js
var s = document.createElement('script');
s.src = chrome.runtime.getURL('injected.js');
s.onload = function() {
    this.remove();
};
(document.head || document.documentElement).appendChild(s);
로그인 후 복사

이 스크립트는 요청 및 응답을 캡처하는 코드가 포함된 주입된.js를 삽입합니다.

// injected.js
(function(xhr) {

    // Override XMLHttpRequest methods
    var XHR = XMLHttpRequest.prototype;
    var open = XHR.open;
    var send = XHR.send;
    var setRequestHeader = XHR.setRequestHeader;

    // Intercept open() to capture request details
    XHR.open = function(method, url) {
        this._method = method;
        this._url = url;
        this._requestHeaders = {};
        this._startTime = (new Date()).toISOString();

        return open.apply(this, arguments);
    };

    // Intercept setRequestHeader() to track request headers
    XHR.setRequestHeader = function(header, value) {
        this._requestHeaders[header] = value;
        return setRequestHeader.apply(this, arguments);
    };

    // Intercept send() to capture response details
    XHR.send = function(postData) {

        this.addEventListener('load', function() {
            var endTime = (new Date()).toISOString();

            // Retrieve request URL, headers, and response headers
            var myUrl = this._url ? this._url.toLowerCase() : this._url;
            if (myUrl) {
                // Print request headers, response headers, and response body (if available in string format)
                console.log(this._url);
                console.log(JSON.parse(this._requestHeaders));
                console.log(this.getAllResponseHeaders());
                if ( this.responseType != 'blob' && this.responseText) {
                    console.log(JSON.parse(this.responseText));
                }
            }
        });

        return send.apply(this, arguments);
    };

})(XMLHttpRequest);
로그인 후 복사

마지막으로 매니페스트.json을 다음과 같이 업데이트합니다. 필요한 스크립트와 리소스를 포함합니다.

// manifest.json (MV3)
{
  "manifest_version": 3,
  "content_scripts": [
    {
      "matches": ["*://website.com/*"],
      "run_at": "document_start",
      "js": ["contentscript.js", "inject.js"]
    }
  ],
  "web_accessible_resources": [
    {
      "resources": ["injected.js"],
      "matches": ["*://website.com/*"]
    }
  ]
}

// manifest.json (MV2)
{
  "web_accessible_resources": ["injected.js"]
}
로그인 후 복사

이제 이 접근 방식을 사용하면 요청 헤더를 수정하고 동일한 Chrome 확장 프로그램입니다.

위 내용은 Chrome 확장 프로그램에서 HTTP 응답 헤더를 캡처하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!