Pdf.js: 使用 pdf.js 在外部 url 上加载 pdf 时出错

创建于 2016-04-05  ·  22评论  ·  资料来源: mozilla/pdf.js

你好,
当我想从外部 url 加载 pdf 时出现此错误

错误:文件来源与查看者的不匹配
throw new Error('文件来源与查看器不匹配');

请帮忙!

最有用的评论

我决定在 viewer.js 中评论这行

if (fileOrigin !== viewerOrigin) {
throw new Error('文件来源与查看器不匹配');
}

所有22条评论

这是故意完成的,请参阅#6916。 修改 viewer.js 以将您的主机来源包含在 HOSTED_VIEWER_ORIGINS 列表中。 关闭作为回答。

谢谢@yurydelendik
但我不知道这个答案如何帮助我

但我不知道这个答案如何帮助我

修改 viewer.js 以将您的主机来源包含在 HOSTED_VIEWER_ORIGINS 列表中。

我做到了,但我不知道如何调用我的远程 pdf 文件

我做到了,但我不知道如何调用我的远程 pdf 文件

请解释。 您还可以提供以下信息:

  • 包含文件参数的查看器的 URL 是什么?
  • viewer.js 代码中发生了什么变化?
  • 如何在托管 PDF 的服务器上配置 CORS 标头?

我的 pdf 文件在 cloudinary 上。
当我将访问权限放入 DEFAULT_URL 变量时,出现错误
错误:文件查看器的来源不匹配
抛出新错误('文件查看器来源与\'s'不匹配);

我决定在 viewer.js 中评论这行

if (fileOrigin !== viewerOrigin) {
throw new Error('文件来源与查看器不匹配');
}

不要注释逻辑。 使用 console.log() 查看您的 fileOrigin 和 viewerOrigin 是否匹配。 确保您的 HOSTED_VIEWER_ORIGINS 对象中至少有一个条目与 viewerOrigin 匹配,并且“_File origin 与 viewer_”错误将消失。

添加这个:

console.log('fileOrigin', fileOrigin);
console.log('viewerOrigin', viewerOrigin);

... 正上方:

if (fileOrigin !== viewerOrigin) {
throw new Error('file origin does not match viewer\'s');
}

我敢打赌,您会像我一样在 URL 末尾丢失(或添加)一个斜杠(在控制台记录这两个变量时发现)。

希望这可以帮助某人。

能够使用 regex/wildchars 配置 HOSTED_VIEWER_ORIGINS 数组会很好。

为了允许非硬编码的 Mozilla 域,我必须修改一个名为 viewer.js 的 10k 行构建文件的源代码?

@gildasamuel你拯救了我的一天!!

正确的解决方法是打开 viewer.js 并将文件的主机附加到 HOSTED_VIEWER_ORIGINS
var HOSTED_VIEWER_ORIGINS = ['null', '.....'];

不要删除检查代码:|

我在 UWP 和本地 pdf 文件上有同样的问题(文件来源与查看者的不匹配)。 对于本地路径,究竟必须将哪些条目添加到 HOSTED_VIEWER_ORIGINS 中?

对于在应用程序中使用它的任何其他人,我必须添加“file://”以允许本地路径工作。

var HOSTED_VIEWER_ORIGINS = [
'空值',
' http://mozilla.github.io ',
' https://mozilla.github.io ',
'file://' //应用中的本地查看器
];

在我的情况下,我在本地编码,我遇到了同样的问题,我通过添加我的本地地址来解决

var HOSTED_VIEWER_ORIGINS = [
       'null',
       'http://mozilla.github.io',
       'https://mozilla.github.io',
       'http://localhost:5000'
];

不要删除检查代码

if (fileOrigin !== viewerOrigin) {
       throw new Error('file origin does not match viewer\'s');
}

我认为添加这两行将是一个很好的解决方案。 将自动检测您的本地 IP(无论您在哪里启动应用程序)

  var LOCAL_AUTO_DETECT_ORIGIN = window.location.origin;

  var HOSTED_VIEWER_ORIGINS = ['null', 'http://mozilla.github.io', 'https://mozilla.github.io'];

  HOSTED_VIEWER_ORIGINS.push(LOCAL_AUTO_DETECT_ORIGIN);

这是故意完成的,请参阅#6916。 修改 viewer.js 以将您的主机来源包含在 HOSTED_VIEWER_ORIGINS 列表中。 关闭作为回答。

帮助过我

这是一个非常糟糕的问题,无论如何还没有解决。

从源“ http://localhost ”获取“ https://dmain/file.pdf ”的访问已被 CORS 策略阻止:请求的资源上不存在“Access-Control-Allow-Origin”标头。 如果不透明响应满足您的需求,请将请求的模式设置为“no-cors”以在禁用 CORS 的情况下获取资源。

你好,

是否有一个原因 ?

关注 cors 政策是浏览器的责任,而不是 pdfjs
我认为应该删除此检查。

我在 validateFileURL 函数的顶部添加了return;并且它现在工作正常,我可以从亚马逊 s3 加载 pdf。

正如@IK77提到的,你能提供一个理由吗?

好吧,我发现了这个: https :
@IK77

此页面是否有帮助?
0 / 5 - 0 等级