0

有没有一种方法或服务允许只读(不保存或下载)PDF 仅嵌入一个域?我知道有像 Scribd 和 Slideshare 这样的服务,但问题是虽然它们确实有私人选项,但据我所知,没有任何服务允许将嵌入列入白名单(例如,只允许在某些域上嵌入。)Vimeo 可以做到这一点视频,我也不介意为此服务付费。有任何想法吗?

我还研究了 PDFJS,似乎他们有一个 NodeJS 实现,所以我想 PDFJS 可能可以从服务器端的服务器获取 PDF 并将其流式传输到客户端而不暴露原始 PDF url。但是我找不到 PDFJS 的好文档。

任何帮助将不胜感激。

4

1 回答 1

1

这可以通过任何 HTTP 服务器来实现,但是由于您在问题中提到了 Node,我们将使用该技术解决问题。我也假设 Express 框架。

首先,您只需将 PDF 作为静态文件托管在您的服务器上。然后,您将注册一些检测 PDF 请求的中间件。如果请求的主机名与“已批准”域列表不匹配,则您将错误返回给客户端。如果域获得批准,您将提供 PDF。这与 Apache 中限制域/IP 访问的 .htaccess 文件或 Nginx 配置中的“允许”块没有什么不同。这是中间件功能的快速浏览...

var approved = []; // Add your approved domains here.

// Make sure this middleware comes before app.use(express.static)
app.use(function(req, res, next){
    if(req.url == '/path/to/PDF') {
        if(approved.indexOf(req.headers.host) {
            next();
        } else {
            next(new Error('Nu uh uh!')); 
        }
    } else {
        next();
    }
});

这样,即使他们复制嵌入代码,他们也会从服务器收到错误(可能应该是 403,但这些是您可以自行决定的语义)

于 2012-11-15T17:21:12.177 回答