2013-08-24 2 views
7

저는 일반적으로 자바 스크립트 및 웹 개발에 익숙하지 않습니다. 현재 진행중인 프로젝트는 일반 회사 교육 프로그램의 일부입니다. Google은 Chrome을 기본 테스트 브라우저로 사용하도록 지시 받았습니다.자바 스크립트 XMLHttpRequest "NetworkError"

본질적으로 회사 인트라넷 외부의 클라이언트에서 실행되는 응용 프로그램을 작성하고 있습니다. 연결은 싱글 사인온 (single sign on) 서버를 통해 내부 서비스로 전달됩니다. Single Sign On 서비스는 대부분 서버 측 응용 프로그램에 투명합니다. 내부 서비스에 대한 요청을 차단하고 필요한 경우 자격 증명을 묻는 메시지를 표시합니다. 내가 말할 수있는 것부터, 모든 요청이 전송되는 동안 세션 쿠키가 변경됩니다.

저는 HTTP GET 및 POST 연결을 사용하여 서비스에 대한 연결을 설정했습니다. 그러나 HTTP PUT 요청이 필요한 서비스가 하나 있습니다. 이 문제가오고있는 곳입니다

스크립트가 실행

, 자바 스크립트 콘솔 크롬은 다음과 같은 오류 제공합니다.

Uncaught NetworkError: A network error occurred. 

오류가 너무 모호합니다. Chrome 개발자 탭의 네트워크 탭에서 요청을 표시하지만 응답 데이터가 없습니다.

호기심 때문에 요청을 마우스 오른쪽 버튼으로 클릭하고 cURL 요청으로 복사했습니다. 요청에 -b 플래그를 통해 세션 쿠키를 추가했습니다. cURL은 서버에서 쿠키 만들기 스크립트에 대한 참조와 함께 HTTP 302를 반환합니다. PUT 요청인데 리디렉션으로 인해 요청이 실패하지 않습니까? 그러나 이것이 Chrome/js에서 일어나는 일에 긍정적이지는 않습니다.

오류에 대한 추가 정보를 얻을 수있는 방법이 있습니까?

우리가 사용할 내부 서비스를 개발 한 팀에서 100 % 확신하지 못하기 때문에 PUT 요청을 실제로 사용할 수 없게 될 수 있습니다 ... 서비스 또한 아직 개발 중입니다.

분명히 말해서 가능한 경우 전체 SSO 응용 프로그램을 통과하는 PUT 요청이 필요하다는 것입니다.

답변

10

동일한 문제가 발생했습니다. 리디렉션 응답에서만 발생하는 것으로 보입니다. 비동기 플래그를 false로 설정하고 콜백 함수를 사용하면 오류가 사라집니다. 예를 들어 :

xmlhttp.onreadystatechange=function() { 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) { 
    // do stuff here 
    } 
} 
:

xmlhttp.open("GET","http://google.com", false); 

그런 다음 당신은 응답을 수신하기 위해이 같은 기능이 필요합니다