파일을 찾으면 요청을 임시 다운로드 링크로 리디렉션하는 Box API를 사용하여 클라이언트 측 JavaScript에서 파일을 다운로드하려고합니다. 브라우저가 리디렉션을 차단하고 있지만 다음 오류가 발생합니다.CORS 요청 리디렉션 실패
XMLHttpRequest는 https://api.box.com/2.0/files/file-id/content을로드 할 수 없습니다. 요청이 'https://dl.boxcloud.com/d/1/some-big-hash/download'(으)로 리디렉션되었습니다. 프리 플라이트가 필요한 교차 출처 요청에는 허용되지 않습니다.
네트워크 콘솔에서 나는 첫 번째로 OPTIONS (실제 코드는 GET을 전송하기 때문에 비행해야 함)와 200 응답을 가진 두 번째 요청을 볼 수 있습니다. 302'd (해당 API 호출에 대한 예상 응답)를 얻습니다.
내 질문은 (a)는var xhr = new XMLHttpRequest();
xhr.open('GET', url);
xhr.setRequestHeader('Authorization', 'Bearer '+MyToken);
xhr.onload = function()
{
//some stuff
}
xhr.onerror = function()
{
//some other stuff
}
xhr.send();
: 왜 두 가지가 프리 플라이트 후 전송되는 가져옵니다 돌아 오면 여기에 요청을 만드는 코드는? (b) : 리디렉션을 따르도록 요청을 형식화 할 수있는 방법이 있습니까? (c) 그렇지 않은 경우 최소한 응답에서 리디렉션 URL을 검색하고 다른 명시 적 요청을 따라갈 수 있습니까? 콘솔의 모든 응답에는 올바른 출처로 설정된 'Access-Control-Allow-Origin'헤더가 있습니다. 두 개의 요청보다는 세를 얻을 이유
감사
'두 번째 두 개는 동일한 GET 요청입니다. '- 모든 것이 동일합니까? –
@ Maximus 요청/응답 헤더가 동일하지만 Chrome 네트워크 콘솔의 '개시 자'열에서만 볼 수있는 유일한 차이점이 있습니다. 하나는 "https://api.box.com/2.0/files/file_id/content"(초기 요청이 전송 된 URL)이고 다른 하나는 "기타" –
이고 URL은 동일한 것으로 나타 났습니까? –