Htaccess - 仅允许从 pdf.js 访问文件

Htaccess - Allow access to file only from pdf.js

我对 .htaccess 文件有一些问题。

为了防止下载或打印 pdf 文档,我使用 PDF.js 来阅读内容。 现在我想禁用与这些文件的直接 http 连接。 在 pdf.js 文件夹中,我放置了一个名为 "doc" 的目录,其中包含所有项目和这个 .htaccess:

Order allow,deny
Deny from all
<Files  ~ "viewer\.html$">
    Allow from all
</Files>

其中 viewer.html 是包含文档 reader 的页面。 所以,当我尝试从我的浏览器访问

localhost:8080/test/pdfjs/web/viewer.html?file=doc/mondia.pdf

我得到:

Unexpected server response (403) while retrieving PDF "../test/pdfjs/web/mondia.pdf"

我哪里错了?

如果 PDF.js 在用户的网络浏览器中是 运行,则用户需要能够下载 PDF 文档。 Apache 无法(可靠地)区分 "PDF.js on the user's computer" 和 "Google Chrome on the user's computer" - 两者都是来自用户计算机的资源的 HTTP 请求。

如果您真的想要,您也许可以在 PDF.js 请求 PDF 时检测到某些 header 设置,并在没有 header 的情况下拒绝请求。这将阻止普通用户直接访问该文件,但任何在浏览器中按 F12 的人都可以看到 PDF.js 下载的 PDF 并从那里保存内容。

即使您以 PDF 以外的其他形式提供它,用户也可以复制并粘贴生成的结果 HTML,或者对其在屏幕上的呈现方式进行截图。

阻止用户使用自己的计算机做某事从根本上说很难;如果他们可以在屏幕上阅读某些内容,您已经以某种形式将其发送给他们。要真正阻止它们,您需要一个受信任的 "DRM" 加密系统,该系统可以直接呈现在屏幕上,而无需让用户访问解密数据。在绝大多数情况下,这完全是矫枉过正,只会惹恼您的用户(例如,盲人用户可能无法访问内容,因为他们的屏幕 reader 软件不可信)。

你可以试试这个插件

https://it.wordpress.org/plugins/editionguard-for-woocommerce-ebook-sales-with-drm/#description

或类似的, DRM 是 wordpress 网站的最佳解决方案。

或者在 pdf-js

中使用这个 header

How to set range header from client with pdf.js?

请编辑 Vtiger_root_location/storage 中的 .htaccess 文件 添加 'pdf' 选项如下: