发送 PDF 作为对客户端的响应

Send PDF as response to client

我遇到了 PdfKit 的奇怪行为。我正在使用 Nodejs 和 Express。当我调用生成 PDF 的路由时,路由本身被调用了两次,我不明白为什么。

下面是重新创建这个的最小代码:

var express = require('express'),
    app = express();

app.get('/', function (req, res) {
    console.log('Route called with referer', req.headers.referer);

    var PdfDocument = require('pdfkit'),
        doc = new PdfDocument();

    doc.pipe(res);
    doc.addPage();
    doc.end();
});

app.listen(7373, function () {
    console.log('started');
});

在终端中,我有这些日志,仅从浏览器刷新页面一次:

node tmp/server.js
started
Route called with referer undefined
Route called with referer http://127.0.0.1:7373/

有人知道为什么路由会自动调用一次吗?

好的,经过分析,我发现是浏览器的PDF查看器发起了第二次调用。使用 wgetcurl 时,我只看到一个调用和一个日志。所以请注意,当从浏览器显示页面时,代码会被解析两次。