Microsoft Edge PDF内联问题

我们的Rails Web应用程序使用wkhtmltopdf生成PDF并将它们发送到客户端。 这适用于除Edge之外我们测试过的每个Web浏览器。

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

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

这将打开PDF查看器,并在我们测试过的每个浏览器中正确显示PDF,除了浏览器显示的Edge之外: 有些东西打开此PDF。

在我们的应用程序日志中,有POST请求,即表单提交,我可以看到我们的应用程序发送pdf文件响应,然后有对表单提交URL的后续GET请求哪个错误,因为它不期望对该URL的任何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=; 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=; 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的一个问题。

我们一直在使用我们在服务器上生成的PDF报告和内联调度的相同问题 – 为查看器打开的新选项卡似乎重新发出内容请求而不是显示响应中的内容。 由于我们使用合成的一次性使用路径(由于很大的历史原因,以确保获取报告的新版本),报告实际上并不存在新选项卡的GET请求。

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

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

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