Ошибка: ресурс интерпретируется как документ, но передается с приложением MIME-типа

Я отправляю поток PDF со своего сервера на клиент, а затем отображаю этот PDF в теге <object> на клиенте. Вот мой код:

server.js

router.get('/pdf', function * () {
  var stream = getMyFileStream();
  this.set('Content-Type', 'application/pdf');
  this.response.body = stream;
});

client.js

var objectElement = document.querySelector('object');

fetch('/pdf', request)
  .then(res => res.blob())
  .then(blob => URL.createObjectURL(blob))
  .then(url => {
    objectElement.setAttribute('data', url)
    objectElement.setAttribute('type', 'application/pdf')
  })

Кажется, этот код работает правильно, однако в консоли я получаю следующее предупреждение:

  

Ресурс интерпретируется как Документ, но передается с приложением MIME-типа /pdf

Почему мой ресурс должен быть text/html? Если я изменю свой заголовок Content-Type на text/html , это заставляет предупреждение исчезнуть, но это, очевидно, вызывает проблему рендеринга PDF. Любая помощь будет оценена.

7 голосов | спросил saadq 31 +03002016-10-31T15:22:51+03:00312016bEurope/MoscowMon, 31 Oct 2016 15:22:51 +0300 2016, 15:22:51

2 ответа


0

В вашей инструкции извлечения вам нужно установить тип заголовка, потому что по умолчанию будет использоваться документ. Поскольку вы не указали соответствующий контент, браузер сообщает, что происходит что-то нехорошее.

// to stop browser complaining use a request object to specify header
var request = new Request('/pdf', {
    headers: new Headers({
        'Content-Type': 'application/pdf'
    })
});

fetch(request)
.then(function() { /* handle response */ });
...

Примечание: это из моего собственного оценочного исследования API fetch. Я еще не использовал его в гневе, так что это не проверено. Я нашел этот сайт полезным https://davidwalsh.name/fetch .

Дайте мне знать, как вы поживаете, пожалуйста.

ответил Vanquished Wombat 9 32016vEurope/Moscow11bEurope/MoscowWed, 09 Nov 2016 14:33:24 +0300 2016, 14:33:24
0

Скорее всего, это потому, что существует перенаправление из /pdf и /или отсутствует расширение файла.

Добавьте этот дополнительный заголовок:

this.set('Content-Disposition', 'attachment; filename=results.pdf');
ответил K48 31 +03002016-10-31T15:27:09+03:00312016bEurope/MoscowMon, 31 Oct 2016 15:27:09 +0300 2016, 15:27:09

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132