是否存在允许只读(不保存或下载)PDF嵌入在一个域上的方式或服务?我知道有像Scribd和Slideshare这样的服务,但问题是虽然他们确实有私有选项,但据我所知,没有任何服务允许将嵌入列入白名单(例如,只允许嵌入某些域。)Vimeo可以做到这一点视频,我也不介意支付这项服务。有什么想法吗?
我也研究过PDFJS,看起来他们有一个NodeJS实现,所以我想也许PDFJS可以从服务器端的服务器上获取PDF并将其流式传输到客户端,而不会暴露原始的PDF URL。但是我找不到PDFJS的好文档。
非常感谢任何帮助。
答案 0 :(得分:1)
这可以通过任何HTTP服务器实现,但由于您在问题中提到了Node,我们将使用该技术解决问题。我也在假设Express Framework。
首先,您只需将PDF作为静态文件托管在服务器上。然后,您将注册一些检测PDF请求的中间件。如果请求的主机名与“已批准”域的列表不匹配,则会将错误提供给客户端。如果域名获得批准,您将提供PDF。这与Apache中的.htaccess文件没有区别,该文件限制域/ IP或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,但这些是你可以自己决定的语义)