문제

xmlhttprequest-s를 보낼 때 브라우저가 리디렉션을 따르지 않도록 할 수 있습니까?

도움이 되었습니까?

해결책

에 따르면 XMLHTTPREQUEST 객체에 대한 W3C 표준 (강조 추가) :

응답이 HTTP 리디렉션 인 경우 :

위치 헤더로 전달 된 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을 찾을 수 있습니다.

당신이 사용할 수있는 responseURL 속성 리디렉션 목적지를 얻거나 반응이 궁극적으로 귀하가 수용 할 수있는 위치에서 가져 왔는지 확인하십시오.
물론 이것은 결과가 어쨌든 가져 오는 것을 의미하지만 적어도 리디렉션 대상에 대한 필요한 정보를 얻을 수 있으며 예를 들어 응답을 버릴 때 조건을 감지 할 수 있습니다.

XMLHTTPREQUEST에 의해 노출 된 API에는 301 또는 302를 따르는 기본 동작을 자동으로 재정의 할 수있는 장소가 없습니다.

클라이언트가 Windows에서 IE를 실행중인 경우 WinHTTP를 사용하여 해당 동작을 방지하는 옵션을 설정할 수 있지만 매우 제한적인 솔루션입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top