2012-05-14 8 views
0

Ajax 요청을 작성한 다음 응답 헤더를 구문 분석하여 "위치"속성을 가져 오려고합니다. "Ajax 요청이지만 내용 없음

var request = new XMLHttpRequest(); 
request.onreadystatechange = function() { 
    if(request.readyState == 4 && request.status == 301) { 
     alert('test'); 
     var header = request.getResponseHeader('Location'); 
     console.log(header); 
    } 
} 
request.open('GET', hrefAttr, true); 
request.send(null); 

문제는 어떤 이유로, 요청이 보내라고하고 반응이 너무 (빨간색"GET "요청 + 방화범이 끌려에서 응답)를 수신하지만, 나는 어떤을하지 않는다 : 이것은 내 코드입니다 테스트 "경고 나 방화 광구 콘솔의 텍스트는 표시되지 않습니다.

편집 : 파이어 버그 콘솔 탭 1, 1, 2, 4

:

var request = new XMLHttpRequest(); 
request.onreadystatechange = function() { 
console.log(request.readyState); 
    if(request.readyState <= 3 && request.status == 301) { 
     alert('test'); 
     var header = request.getResponseHeader('Location'); 
     console.log(header); 
    } 
    else if (request.readyState == 0 && request.status == 301) { 
     alert('state0'); 
    } 
} 
request.open('GET', hrefAttr, true); 
request.send(); 

CONSOLE.LOG (request.readyState) 상태의 시퀀스를 제공한다 :이 수정 코드 Http Request + Response는 잘 보이지만 빨간색으로 표시됩니다.

내가 왜 작동하지 않는지 확실하지 않습니다 ... 편집 : Firefox를 사용하고 있습니다.

미리 감사드립니다.

+0

응답 코드가 301인지 확인 하시겠습니까? – Gary

+0

예, 헤더에 "HTTP/1.1 301 Moved"가 표시됩니다. –

+0

어떨까요 readyState는 우연히 0입니까? – Gary

답변

2

XHR은 301을 따라 가고 리디렉션 된 페이지의 콘텐츠를 반환합니다. 당신은 XMLHttpRequest의 기원과 요청 URL의 기원이 동일 출처 요청 이벤트 규칙을 관찰하면서 같은 기원 투명하게 리디렉션을 수행하는 경우 W3C here.

에 설명 된 동작을 볼 수 있습니다.

기본적으로 귀하의 요청은 301을 투명하게 따르고 있습니다. 브라우저가 자동으로 리디렉션되므로 수행하려는 작업을 수행 할 수 없습니다. 웹 서버를 제어 할 수 있다면 대부분의 조언과 달리 변경 될 수 있습니다.

희망이 도움이됩니다.

+0

그것은 실제로 이상합니다. 요청을 보내면 리디렉션되지 않고 양호한 "301"상태의 응답이 표시되고 Firebug의 헤더에 "Location : XYZ"정보가 표시됩니다. 편집 : 체크 및 HTTP 헤더에 HTML이 없습니다. –