programing

NETWORK_ERROR: XMLHttpRequest 예외 101

telecom 2023. 9. 7. 21:30
반응형

NETWORK_ERROR: XMLHttpRequest 예외 101

이 오류가 발생합니다.

NETWORK_ERROR: XMLHttpRequest 예외 101

한 사이트에서 XML 컨텐츠를 가져오려고 할 때.

여기 내 코드가 있습니다.

    var xmlhttp; 
    if(window.XMLHttpRequest) { 
        xmlhttp = new XMLHttpRequest();
    }

    if (xmlhttp==null) {
        alert ("Your browser does not support XMLHTTP!");
        return;
    }

    xmlhttp.onReadyStateChange=function() {
        if(xmlhttp.readyState==4) {
            var value =xmlhttp.responseXML;
            alert(value);
        }
    }
    xmlhttp.open("GET",url,false);
    xmlhttp.send();
    //alert(xmlhttp.responseXML);
}

xmlhttp.open("GET",url,false);
xmlhttp.send(null);

해결책이 있는 사람?

만약에url당신이 제공하는 것은 당신의 서버 외부에 위치하고, 서버는 당신이 요청을 보내는 것을 허락하지 않았고, 당신은 권한 문제가 있습니다.다른 서버에서 데이터에 액세스할 수 없습니다.XMLHttpRequest, 서버에서 명시적으로 허용하지 않는 경우.

업데이트: 이것이 이제 Google에서 답변으로 표시된다는 것을 깨닫고 이 오류에 대한 문서를 찾으려고 했습니다.그것은 놀랍게도 어려웠습니다.

그러나기사에는 몇 가지 배경 정보와 해결해야 할 단계가 있습니다.여기서는 구체적으로 다음과 같은 오류를 언급합니다.

웹 응용프로그램의 원본에서 요청을 허용하도록 서버가 구성되어 있는 한 XMLHttpRequest가 작동합니다.그렇지 않으면 INVALID_ACCESS_ERR 예외가 발생합니다.

INVALID_ACCESS_ERR에 대한 해석이 여기서 보는 것 같습니다.

이 문제를 해결하려면 요청을 받은 서버가 오리진을 허용하도록 구성되어야 합니다.이에 대해서는 Mozilla에서 보다 자세히 설명합니다.

XMLHtpRequest로 다른 서버의 데이터에 액세스할 수 없다는 제한 사항은 URL이 원격 서버를 의미하는 경우에도 적용될 수 있습니다.

그래서 : url = "http://www.myserver.com/webpage.html "

실패할 수도 있고,

그러나: url = "/http.jp"

success - www.myserver.com 에서 요청하는 경우에도 해당됩니다.

캐시되었거나 이전에 요청했기 때문에 요청이 중단되었습니까?XMLHttpRequest Exception 101 오류는 여러 가지 이유로 발생할 수 있습니다.동일한 URL의 XMLHttpRequest를 한 번 이상 전송할 때 발생하는 것을 발견했습니다.(URL 끝에 캐시가 넌센스 문자열을 제거하여 URL을 변경하면 해당 요청을 반복할 수 있습니다. -- 해당 요청을 반복할 의도는 아니었지만, 프로그램의 이벤트가 발생하여 이 예외가 발생했습니다.)

올바른 응답 텍스트 또는 응답 X를 반환하지 않음반복 요청 시 ML은 버그(webKit일 가능성이 있음.

이 예외가 발생했을 때 readyState==4와 request object state=0 및 response로 onload 이벤트가 발생했습니다.텍스트 =="" 및 응답 XML==슬라이스.서버가 허용하는 교차 도메인 요청이었습니다.

이것은 웹킷/533.1을 사용하는 안드로이드 2.3.5 시스템에 있었습니다.

예외가 무엇을 의미하는지 문서를 가지고 있는 사람이 있습니까?

잘못된 XML을 반환할 때(루트 노드에 속성을 넣음) 이와 같은 일이 발생했습니다.누군가에게 도움이 된다면요

xmlhttp.open("GET",url, true);

비동기 부분을 true로 설정

저는 두 가지 다른 해결책을 가진 아주 멋진 기사를 발견했습니다.

  1. jQuery와 JSONP를 구현한 첫 번째 제품으로, 얼마나 간단한지 설명합니다.
  2. 두 번째 접근법은 PHP 통화를 통해 방향을 전환하는 것입니다.아주 단순하고 아주 좋습니다.

http://mayten.com.ar/blog/42-ajax-cross-domain

이 문제를 해결하는 또 다른 현대적인 방법은 Cross Origin Resource Sharing입니다.HTML5는 이 기능을 제공합니다.이 CORS_request에서 XMLhttp 요청을 "wrap"할 수 있으며 대상 브라우저가 이 기능을 지원하는 경우 사용할 수 있으며 문제가 없습니다.

편집: 추가적으로 이 문제를 야기할 수 있는 많은 이유가 있음을 덧붙여야 합니다.도메인 간 제한뿐만 아니라 단순히 웹에서 잘못된 설정도 있습니다.웹 서비스의 구성입니다.

예제 IIS().NET):

외부 소스(CORS 요청이 있는 컴파일된 Phonegap 앱의 경우)에서 HTTP 액세스를 활성화하려면 웹에 이를 추가해야 합니다.CONFIG

    <webServices>
        <protocols>
            <add name="HttpGet"/>
            <add name="HttpPost"/>
        </protocols>
    </webServices>

또 다른 시나리오:

두 개의 웹 서비스가 실행되고 있는데...포트 80에 하나, 포트 90에 하나.이로 인해 XML HTTP Request Error가 발생했습니다.왜 그런지도 모르겠습니다 :).그럼에도 불구하고 저는 이것이 경험이 부족한 많은 독자들에게 도움이 될 것이라고 생각합니다.

언급URL : https://stackoverflow.com/questions/2235929/network-error-xmlhttprequest-exception-101

반응형