Встроенная проблема Microsoft Edge PDF

Наше веб-приложение Rails генерирует PDF-файлы с помощью wkhtmltopdf и отправляет их клиенту. Это работает в любом веб-браузере, с которым мы тестировали, кроме Edge.

Мы попытались отобразить ответ несколькими способами, как это было изначально:

kit = PDFKit.new(@html_content)
render text: kit.to_pdf, content_type: 'application/pdf'

Это открывает средство просмотра PDF, в котором PDF отображается правильно во всех браузерах, с которыми мы тестировали, кроме Edge, где браузер отображает: что-то препятствует открытию этого PDF.

В наших журналах приложений есть запрос POST, представляющий собой отправку формы, и я вижу, как наше приложение отправляет ответ в виде файла PDF, затем появляются последующие запросы GET на URL-адрес отправки формы, ошибка, поскольку он не ожидает запроса GET к этому URL-адресу., Я понятия не имею, что здесь происходит.

Заголовки ответа на запрос:

Cache-Control: max-age=0, private, must-revalidate
Connection: Keep-Alive
Content-Length: 34865
Content-Type: application/pdf; charset=utf-8
Date: Thu, 18 Jun 2015 14:35:30 GMT
Etag: "4baf297d1866339e60e8e893300909a0"
Server: WEBrick/1.3.1 (Ruby/2.0.0/2013-06-27)
Set-Cookie: _APP_session=<long cookie>; path=/; HttpOnly
X-Request-Id: 617580a8-4d7d-43c4-8e49-aeaeafba7b79
X-Runtime: 21.868098
X-XSS-Protection: 1; mode=block
x-content-type-options: nosniff
x-frame-options: SAMEORIGIN
x-ua-compatible: chrome=1

Я также пытался использовать send_data как это:

send_data kit.to_pdf, type: 'application/pdf', disposition: 'inline'

Что приводит к следующим заголовкам ответа, но в конечном итоге та же проблема:

Cache-Control: private
Connection: Keep-Alive
Content-Disposition: inline
Content-Length: 34866
Content-Transfer-Encoding: binary
Content-Type: application/pdf
Date: Thu, 18 Jun 2015 14:39:42 GMT
Etag: "11db49f1a26444a38fa2b51f3c3336ed"
Server: WEBrick/1.3.1 (Ruby/2.0.0/2013-06-27)
Set-Cookie: _APP_session=<long cookie>; path=/; HttpOnly
X-Request-Id: 501d9832-b07e-4764-8ecc-f1c1e9a6421e
X-Runtime: 7.054236
X-XSS-Protection: 1; mode=block
x-content-type-options: nosniff
x-frame-options: SAMEORIGIN
x-ua-compatible: chrome=1

Если я удалю Content-Disposition: inline В заголовке выше приведен запрос на сохранение файла и загрузка файла работает нормально. Нам нужно загрузить его в окне браузера.

Я не считаю, что это дубликат этого вопроса, потому что он работает в IE 9, 10 и 11 и является только проблемой с Edge.

2 ответа

Решение

Это была ошибка, но Microsoft исправила ее в сборке 10158!:)

У нас возникла такая же проблема с отчетами в формате PDF, которые мы генерируем на сервере и отправляем в линию - новая вкладка, которая открывается для зрителя, по-видимому, повторно отправляет запрос на контент вместо отображения контента из ответа, Поскольку мы используем синтетический одноразовый путь (по большей части историческим причинам, чтобы обеспечить выбор новой версии отчета), отчет фактически не существует для запроса GET новой вкладки.

Поскольку мы используем 20.10240, я не уверен, что на самом деле это было исправлено в 10158.

Как и в случае с OP, кажется, что это применимо только к "Content-Disposition: inline"; если вместо этого мы используем "вложение", временный файл сохраняется локально, а временный файл открывается в программе просмотра.

Другие вопросы по тегам