Я пытаюсь загрузить файл на стороне клиента Javascript, используя API-интерфейс Box, который перенаправляет запрос на временную ссылку загрузки после того, как файл был найден. Браузер блокирует перенаправление, однако, вызывая следующую ошибку:Redirect Failed on CORS Request
XMLHttpRequest не может загрузить https://api.box.com/2.0/files/file-id/content. Запрос был перенаправлен на «https://dl.boxcloud.com/d/1/some-big-hash/download», который запрещен для запросов с кросс-началом, которые требуют предполетной проверки.
На консоли сети я вижу три запроса: первый - это ВАРИАНТЫ (которые должны быть предполетными, потому что фактический код отправляет GET) с ответом 200, а во втором - идентичные запросы GET, которые оба получите 302'd (ожидаемый ответ для этого вызова API). Вот код, который делает запрос:
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();
Мой вопрос (а): Почему два GetS отправляются после предполетной возвращается обратно? И (b): Есть ли способ форматировать запрос, чтобы разрешить повторное перенаправление? И (c) если нет, могу ли я, по крайней мере, извлечь URL-адрес перенаправления из ответа и следовать ему с другим явным запросом? Каждый ответ в консоли содержит заголовок «Access-Control-Allow-Origin» с правильным началом.
Благодаря
'второй второй идентичный запрос GET' - все идентично? –
@Maximus заголовки запроса/ответа идентичны, единственное различие, которое я вижу, находится в столбце «инициатор» сетевой консоли Chrome; один говорит «https://api.box.com/2.0/files/file_id/content» (URL-адрес, по которому отправляется первоначальный запрос), а другой говорит «Другой» –
, а URL-адрес тот же? –