Microsoft Edge PDF内联问题

时间:2015-06-18 14:42:23

标签: ruby-on-rails internet-explorer microsoft-edge

我们的Rails网络应用程序使用wkhtmltopdf生成PDF并将其发送到客户端。这适用于我们使用除Edge之外的所有网络浏览器。

我们已经尝试过以几种不同的方式呈现响应,这就是最初的原因:

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

这将打开PDF查看器,并在我们测试的每个浏览器中正确显示PDF,但浏览器显示的边缘除外:保持此PDF不打开的东西。

在我们的应用程序日志中,有一个POST请求,即表单提交,我可以看到我们的应用程序发送pdf文件响应,然后有对表单提交URL的后续GET请求哪个错误,因为它不是期待对该网址的任何GET请求。我不知道这里发生了什么。

请求的响应标头是:

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标题,它会显示保存文件提示并下载文件正常。我们需要在浏览器窗口加载它。

我不相信它是this question的副本,因为它适用于IE 9,10和11,只是Edge的一个问题。

2 个答案:

答案 0 :(得分:0)

我们在服务器上生成的PDF报告听起来像是同样的问题并且内联发送 - 为查看器打开的新标签似乎重新发出内容请求而不是显示内容从回应。由于我们使用合成的一次性使用路径(由于很大的历史原因,以确保获取报告的新版本),报告实际上并不存在新选项卡的GET请求。

由于我们使用的是20.10240,我不相信它实际上是在10158中修复的。

与OP一样,这似乎只适用于“Content-Disposition:inline”;如果我们改为使用“附件”,则会在本地保存临时文件,并在查看器中打开临时文件。

答案 1 :(得分:-1)

这是一个错误,但微软已经在构建10158中修复了它! :)