답변:
XMLHttpRequest 객체에 대한 W3C 표준을 따르지 않음 (강조 추가됨) :
응답이 HTTP 리디렉션 인 경우 :
Location 헤더가 전달하는 URL의 출처가 XMLHttpRequest 출처와 동일한 출처이고 리디렉션이 무한 루프 예방 조치를 위반하지 않는 경우 동일 출처 요청 이벤트 규칙을 준수하면서 리디렉션 을 투명하게 따르십시오 .
그들은 향후 릴리스를 고려 하고 있었습니다 .
이 사양에는이 사양의 향후 버전에서 고려중인 다음 기능이 포함되어 있지 않습니다.
- 다음 리디렉션을 비활성화하는 속성;
그러나 최신 사양은 더 이상 이것을 언급하지 않습니다.
새로운 API의 가져 오기 지원을 리디렉션 처리의 다양한 모드를 : follow
, error
,와 manual
,하지만 난 재 지정이 취소 된 경우 새 URL 또는 상태 코드를 볼 수있는 방법을 찾을 수 없습니다. 리디렉션 자체를 중지하면 오류 (빈 응답)처럼 보입니다. 그게 전부라면 갈 수 있습니다. 또한이 API를 통해 이루어진 요청은 아직 취소 할 수 없습니다 . 그들은 있는 지금.
XMLHttpRequest의 HEAD
경우 서버에서 URL이 변경되었는지 여부를 검사 할 수 있습니다 .
var http = new XMLHttpRequest();
http.open('HEAD', '/the/url');
http.onreadystatechange = function() {
if (this.readyState === this.DONE) {
console.log(this.responseURL);
}
};
http.send();
상태 코드는받지 못하지만 전체 페이지를 다운로드하지 않고 새 URL을 찾습니다.
OPTIONS
하는 것이 더 나은 선택 일 수 있습니다. 어쨌든 비범 용적 용도로만 작동합니다. 관리자가 HTTP-> HTTPS
responseURL
속성을 사용 하여 리디렉션 대상을 가져 오거나 수락 한 위치에서 응답을 궁극적으로 가져 왔는지 확인할 수 있습니다.
이것은 물론 결과를 가져 오는 것을 의미하지만 최소한 리디렉션 대상에 대한 필요한 정보를 얻을 수 있으며 예를 들어 응답을 삭제하려는 조건을 감지 할 수 있습니다.
XMLHttpRequest에 의해 노출 된 API에는 301 또는 302를 자동으로 따르는 기본 동작을 재정의 할 수있는 위치가 없습니다.
클라이언트가 Windows에서 IE를 실행하는 경우 대신 WinHTTP를 사용하여 해당 동작을 방지하는 옵션을 설정할 수 있지만 이는 매우 제한적인 솔루션입니다.