查看PDF浏览器内-打破在Chrome使用POST



所以我不知道什么时候,但显然Chrome浏览器发生了变化,无法在浏览器内查看PDF文件。在Firefox或IE工作中查看这些;这似乎是chrome独有的问题。

到目前为止,我是这样做的。用户将数据POST到服务器,服务器对PDF填充执行了一些神奇的操作,并将PDF发送回浏览器。我们正确地使用Content-Disposition, Content-LengthContent-Type标头(我假设):
Content-Disposition: "inline; filename="some-pdf.pdf""
Content-Length: "1860799"
Content-Type: "application/pdf"

是否有任何具体的原因为什么Chrome拒绝加载这些文件使用浏览器内的PDF查看器?

<标题>编辑:

似乎Chrome在发送到服务器时不加载内联文件。

工作的例子:

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

最新更新