Установка window.location или window.open в AngularJS дает "доступ запрещен" в IE 11

Я, по общему признанию, новичок в AngularJS, но не могу понять, почему этот код работает в Chrome и Firefox, но дает "Access is denied" в javascript-консоли с IE 11.

Мне нужно отобразить PDF через аутентифицированный вызов REST. В идеале это будет отображаться в окне всплывающего окна (предварительного просмотра).

Код до сих пор выглядит следующим образом:

$http.post( url, payload, {
    headers : {
        "Authorization": token
    }, 
    responseType: "arraybuffer"
}).success(function ( data ) {
    var file = new Blob( [ data ], { type: 'application/pdf' });
    var fileURL = URL.createObjectURL( file );
    window.open( fileURL );
}

window.open() дает сообщение "Access is denied" для IE11, но работает в Chrome и Firefox. Я попытался перейти на window.location() и получил ту же ошибку.

Это не междоменная проблема (все в одном домене foo.net).

Ответы

Ответ 1

Сохранение текста в локальном файле в Internet Explorer 10

Похоже, IE блокирует window.open на blobs, но выполняет свои собственные функции для открытия и сохранения blob. Вместо этого попробуйте

if (window.navigator && window.navigator.msSaveOrOpenBlob) {
    window.navigator.msSaveOrOpenBlob(blob);
}
else {
    var objectUrl = URL.createObjectURL(blob);
    window.open(objectUrl);
}