Для приложения, над которым я работаю, у нас есть функция, в которой мы создаем отчет для объекта на стороне сервера и открывая его на новой вкладке (на данный момент) на клиенте.«Отказано в доступе» при попытке открыть URL-адрес, сгенерированный для обработанного процедурами PDF в IE11
Я использую функцию URL.createObjectURL
, чтобы сделать URL-адрес для Blob
, который состоит из результатов вызова AJAX. Однако при вызове $window.open(generatedFileUrl)
я получаю ошибку JavaScript.
Контроллер:
(function() {
angular.module('app').controller('someCtrl', [
'$window', 'someSvc', controller
]);
function controller($window, someSvc) {
var vm = this;
vm.thing = {}; // How we get the object is unimportant for this question.
vm.printThing = printThing;
function printThing() {
someSvc.printThing(vm.thing.id, vm.someFlag)
.then(function(result) {
var file = new Blob([result], {type: 'application/pdf'});
var fileURL = URL.createObjectURL(file);
$window.open(fileURL);
});
}
}
)();
Услуги:
(function() {
angular.module('app').factory('someSvc', [
'$http', someSvc
]);
function someSvc($http) {
var service = {
printThing: function(thingId, someFlag) {
var args = {
'thingId': thingId,
'someFlag': someFlag
};
return $http.get('/Reports/SomeReport', { 'params': args });
}
};
return service;
}
})();
Сервер код на стороне не имеет значения для этого вопроса.
Вопрос: Почему это в моем коде контроллера, я получаю сообщение об ошибке, 0x80070005 - JavaScript runtime error: Access is denied.
в IE11? Кроме того, каким образом я могу избежать ошибки Access Is Denied?
Плохо, я думал о 'msSaveBlob'. Это действительно существует. – Kyle