Подтвердить что ты не робот

Откройте новое окно с данными PDF в объекте blob, возвращенном из XMLHttpRequest

Внутри JavaScript я делаю XMLHttpRequest сервером, который генерирует PDF и возвращает данные PDF. В Chrome я могу открыть эти данные в новом окне/вкладке следующим образом:

window.open( URL.createObjectURL(RETURNED_DATA) );

где RETURNED_DATA - это фактические данные, возвращаемые из XHR.

В IE10 (и я предполагаю, что старые версии IE) я получаю "Permission denied" при попытке window.open() с объектом DOMString, возвращенным из URL.createObjectURL()

Я пробовал различные версии, такие как открытие нового окна перед отправкой XHR и обновление нового местоположения окна в обратном вызове XHR и открытие нового окна с помощью простого HTML файла, который просто содержит XHR, чтобы он может обновить его собственное местоположение в обратном вызове XHR. Все эти изменения работают в Chrome, но приводят к ошибкам "Разрешения на отказ" в IE10.

Мое лучшее предположение заключается в том, что оно вызвано политикой того же происхождения. При регистрации объекта DOMString на консоли в Chrome против IE я заметил, что Chrome добавляет строку с протоколом и хостом, поэтому blob:http://localhost:8080/BLOB_DATA, тогда как IE10 просто имеет blob:BLOB_DATA.

Любые идеи по решению этой проблемы в IE?

4b9b3361

Ответ 1

Для IE 10 и 11 вы можете использовать msSaveOrOpenBlob

window.navigator.msSaveOrOpenBlob(blob, fileName);