【发布时间】:2021-01-01 21:24:42
【问题描述】:
我正在尝试在我的网页上使用pdf.js,我需要在将 PDF 上传到服务器之前验证用户输入的密码是否正确。
但我无法让它工作。
我使用 CDN 托管 pdf.min.js
<script src="https://cdnjs.cloudflare.com/ajax/libs/pdf.js/2.6.347/pdf.min.js" integrity="sha512-Z8CqofpIcnJN80feS2uccz+pXWgZzeKxDsDNMD/dJ6997/LSRY+W4NmEt9acwR+Gt9OHN0kkI1CTianCwoqcjQ==" crossorigin="anonymous"></script>
这是密码检查功能:
function checkPass() {
pdfjsLib.getDocument({
url: 'pdf.pdf',
password: '01010101'
}).promise.then(function (pdf) {
input.classList.add("rightpass");
}).catch(function (error) {
input.classList.add("wrongpass");
console.log(error);
});
}
并在控制台日志中记录Deprecated API usage: No "GlobalWorkerOptions.workerSrc" specified.
我尝试通过pdfjsLib.disableWorker = true; 禁用它,但没有成功。
我只需要验证密码,其他什么都不渲染。
【问题讨论】:
-
这样做的目的是什么?如果您在客户端验证密码,则无法实现安全性,因为您的后端端点直到打开才能上传未经验证的文件,并且您的密码检查可以被规避。过滤掉不需要的 pdf 文件的正确方法是在服务器上 - 上传任何文件,测试密码,删除文件并在密码不匹配时返回错误。
-
pdf文件的客户端密码检查是为了更快的用户体验。
-
所以你在后端仔细检查密码?
-
并非如此。 pdf 受密码保护,为了处理不太常见的错误,例如密码错误,我会在客户端检查它们。
-
i c。好吧,我在 pdf.js 上找不到任何好的文档(这很令人惊讶,因为谁是供应商)。对不起,我不能再帮你了。不过,我怀疑“折旧”警告与您无法验证密码这一事实无关。
标签: javascript html pdf web pdf.js