在浏览器中查看PDF – 使用POST在Chrome中破解
所以我不知道什么时候,但显然Chrome已经发生了一些变化,在浏览器中浏览了PDF。 查看这些内部的Firefox或IE工作; 这似乎是一个纯Chrome的问题。
截至目前,我是如何做到这一点的。 用户将数据发布到服务器,这对PDF使用者来说有一些神奇的作用,并将PDF发送回浏览器。 我们正确地使用Content-Disposition
, Content-Length
和Content-Type
标题(我假设):
Content-Disposition: "inline; filename=\"some-pdf.pdf\"" Content-Length: "1860799" Content-Type: "application/pdf"
Chrome浏览器拒绝使用浏览器中的PDF查看器加载这些文件有什么具体原因吗?
编辑:
看起来Chrome在POST服务器时不加载内嵌文件。
工作示例:
var express = require('express'); var fs = require('fs'); var app = express(); app.listen(3000, function() { console.log('Listening on http://localhost:3000'); }); app.get('/', function(req, res, next) { fs.stat('./some-pdf.pdf', function(e, stats) { if(e) throw e; var stream = fs.createReadStream( './some-pdf.pdf' ); res.setHeader('Content-disposition', 'inline; filename="some-pdf.pdf"'); res.setHeader('Content-Length', stats.size); res.setHeader('Content-type', 'application/pdf'); stream.pipe(res); }); });
非工作示例:
var express = require('express'); var fs = require('fs'); var app = express(); app.listen(3000, function() { console.log('Listening on http://localhost:3000'); }); app.get('/', function(req, res, next) { res.send('<form method="POST"><input type="submit", value="Get PDF"></form>'); }); app.post('/', function(req, res, next) { fs.stat('./some-pdf.pdf', function(e, stats) { if(e) throw e; var stream = fs.createReadStream( './some-pdf.pdf' ); res.setHeader('Content-disposition', 'inline; filename="some-pdf.pdf"'); res.setHeader('Content-Length', stats.size); res.setHeader('Content-type', 'application/pdf'); stream.pipe(res); }); })
这是一个Chrome浏览器的PDF查看器错误。 当您尝试保存PDF时,插件有时会重新请求要保存的页面。 如果它是一个HTTP Post,则存在内部错误,保存失败。
可以在这里看到: https : //code.google.com/p/chromium/issues/detail?id=224520
- 节点与Chrome,将console.log分配给一个variables?
- 无法打开控制台时无法加载资源:net :: ERR_EMPTY_RESPONSE
- websocket的基本authentication
- 为什么console.log(10150141932135203)在Firefox和Chrome中打印10150141932135204,以及如何处理这些大整数值?
- HTML5video在Firefox上缓慢加载,但在Chrome上非常快
- Node.js,node-inspector,JavaScript,Google Chrome:debugging工作stream程
- 为什么具有真正Headless选项的Chrome 59-Beta无法使用量angular器?
- 谷歌铬会话过期=空不工作
- 是否可以在Google Chrome扩展中embeddedHTTP服务器?