Xmlhttprequest 리디렉션 방지
XMLHttpRequest-s를 보낼 때 브라우저가 리디렉션을 따르지 않도록 할 수 있습니까 (즉, 리디렉션 상태 코드를 다시 가져 와서 직접 처리)?
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을 찾습니다.
responseURL
속성을 사용 하여 리디렉션 대상을 가져 오거나 응답이 수락 한 위치에서 궁극적으로 가져 왔는지 여부를 확인할 수 있습니다.
이것은 물론 결과를 가져 오는 것을 의미하지만 최소한 리디렉션 대상에 대한 필요한 정보를 얻을 수 있으며 예를 들어 응답을 삭제하려는 조건을 감지 할 수 있습니다.
XMLHttpRequest에 의해 노출 된 API에는 301 또는 302를 자동으로 따르는 기본 동작을 재정의 할 수있는 위치가 없습니다.
클라이언트가 Windows에서 IE를 실행하는 경우 대신 WinHTTP를 사용하여 해당 동작을 방지하는 옵션을 설정할 수 있지만 이는 매우 제한적인 솔루션입니다.
참고 URL : https://stackoverflow.com/questions/228225/prevent-redirection-of-xmlhttprequest
'program story' 카테고리의 다른 글
google.load로 인해 내 페이지가 비어있는 이유는 무엇입니까? (0) | 2020.08.15 |
---|---|
Activity.finish ()는 Android에서 어떻게 작동합니까? (0) | 2020.08.15 |
Visual Studio의 HintPath 대 ReferencePath (0) | 2020.08.15 |
Angular ui-router에서 $ state.transitionTo ()와 $ state.go ()의 차이점 (0) | 2020.08.15 |
task.Result?와 동일한 완료된 작업을 기다립니다. (0) | 2020.08.15 |