programing

브라우저에서 HTTP 요청이 열려 있는지 확인하는 방법은?

codeshow 2023. 10. 19. 22:51
반응형

브라우저에서 HTTP 요청이 열려 있는지 확인하는 방법은?

다음과 같은 경우 쉽게 알아낼 수 있는 방법이 있나요?XMLHttpRequest브라우저 창에서 활성화됩니까?또는 얼마나 많이 활동하고 있습니까?즉, 브라우저 창에서 활성화된 AJAX 호출이 있는지 확인할 수 있는 방법이 있습니까?

질문 확장:javascript를 사용하여 XMLHttpRequest가 열려 있는지 확인할 수 있는 방법이 있습니까?예를 들어"window.XMLisActive()"아니면 그런 거?

해결책:결국 포장지를 쓰게 되었습니다.XMLHttpRequest: 요충지

다음에 대한 래퍼를 작성하지 않는 한 JS에서 열린 연결을 감지할 수 있는 방법은 없습니다.XmlHttpRequest(또는 원숭이 패치잇) 열려있는 연결을 추적합니다.

여기 키드캐피털의 원숭이 패치가 있어 완벽한지는 모르겠지만 좋은 시작입니다

  (function() {
    var oldOpen = XMLHttpRequest.prototype.open;
    window.openHTTPs = 0;
    XMLHttpRequest.prototype.open = function(method, url, async, user, pass) {
      window.openHTTPs++;
      this.addEventListener("readystatechange", function() {
          if(this.readyState == 4) {
            window.openHTTPs--;
          }
        }, false);
      oldOpen.call(this, method, url, async, user, pass);
    }
  })();

메모

처리할 수 없습니다.fetch웹소켓을 사용할 수도 있지만, 그런 경우에는 비슷한 일을 할 수도 있습니다.

파이어버그를 이용하시면 됩니다.

enter image description here

@juan-mendes의 해결책을 시도했는데 오류가 발생했습니다.ERROR Error Code: undefined Message: Failed to set the 'responseType' property on 'XMLHttpRequest': The response type cannot be changed for synchronous requests made from a document.내 Angular 어플리케이션에서.원인은.async기본적으로 참으로 간주되지만 인수가 누락되면 이 패치가 통과됩니다.undefined거짓으로 해석됩니다.이 작은 변화가 있는 코드는 저에게 적합합니다.

(function() {
        var oldOpen = XMLHttpRequest.prototype.open;
        window.openHTTPs = 0;
        XMLHttpRequest.prototype.open = function(method, url, async = true, user = null, pass = null) {
            window.openHTTPs++;
            this.addEventListener("readystatechange", function() {
                if(this.readyState == 4) window.openHTTPs--;
            }, false);
            oldOpen.call(this, method, url, async, user, pass);
        }
    })()

jQuery를 사용하면 글로벌 이벤트 핸들러인 .jajaxStart() .jajaxComplete()에서 열린 요청이 있는지 추적할 수 있습니다.

ajaxStart와 ajaxComplete에 재설정된 전역 변수가 작업을 수행합니다.

언급URL : https://stackoverflow.com/questions/9267451/how-to-check-if-http-requests-are-open-in-browser

반응형