在外部网址上使用pdf.js加载pdf文件

12

我想从另一个服务器加载PDF文件到我服务器中的pdf.js查看器。但是我遇到了错误“PDF.js v1.4.20(build:b15f335)Message: file origin does not match viewer's”。

我已经查看了很多答案,其中很多人说通过代理传递pdf网址,例如:链接

经过搜索,我发现他们发布了一个新的补丁程序,在其中锁定了任何CDR请求。如果我错了,请纠正我:这里是链接

但在他们的用户手册中,他们指出这是可能的。这里是链接

我尝试了所有方法,但无法在我的服务器上启用CDR,并且许多方法都不起作用。

请帮助我解决这个问题。我基本的想法是在我的pdf阅读器上显示托管在第三方服务器上的pdf文件。


1
是的,它被锁定为演示查看器。想要冒内容欺骗风险的人可以移除此保护,这种情况下,定制的查看器将能够在查看者的域名下显示不相关/恶作剧/冒犯性内容。 - async5
1
请参见 http://stackoverflow.com/questions/37364662/pdf-js-message-file-origin-does-not-match-viewers-amazon-s3。 - async5
5个回答

22

1
或者您可以编辑条件以允许文件的来源。 - Garrett
我在我的viewer.js文件中没有 "if (fileOrigin !== viewerOrigin)"。 - MindRoasterMir
请说明如何使用代理。 - user3156040
1
@MindRoasterMir,如果(origin!== viewerOrigin && protocol!==“blob:”),那就是这样。 - Ameen Aliu
有没有一种方法可以不编辑viewer.js文件? - The.Wolfgang.Grimmer

7

将您的域名/来源添加到HOSTED_VIEWER_ORIGINS数组中


0

我的问题是链接不是https,而网站是安全的


0

pdfjs 尊重 CORS 设置。请按照以下步骤操作:

  1. 进入 viewer.js 文件,找到 HOSTED_VIEWER_ORIGINS 的位置。在该行下方将您的域名添加到数组 HOSTED_VIEWER_ORIGINS 中,如下所示:
    const LOCAL_AUTO_DETECT_ORIGIN = window.location.origin;
    HOSTED_VIEWER_ORIGINS.push(LOCAL_AUTO_DETECT_ORIGIN);
  1. 如果你的文件托管在 AWS S3 存储桶中,那么请在存储桶上设置 CORS 策略,以允许所有域名从该存储桶读取文件

这样应该可以解决你的问题。


0

我通过在viewer.js中添加这一行来解决了这个问题。

    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);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接