【问题标题】:PDF.js Message: file origin does not match viewer's (Amazon S3)PDF.js 消息:文件来源与查看器的 (Amazon S3) 不匹配
【发布时间】:2016-09-08 17:56:36
【问题描述】:

在 Rails 应用程序中,使用 pdfjs_viewer-rails gem (https://github.com/senny/pdfjs_viewer-rails),我一直看到这个错误:

PDF.js v1.3.91 (build: d1e83b5)
Message: file origin does not match viewer's

我认为这是因为 PDF 托管在 Amazon S3 上,并且我已阅读此处 (https://github.com/mozilla/pdf.js/wiki/Frequently-Asked-Questions#faq-xhr) 对 CORS 的讨论。但是,我一直无法组装一个有效的 COSR 配置。

我目前的bucket配置是:

<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
    <CORSRule>
        <AllowedOrigin>*</AllowedOrigin>
        <AllowedMethod>GET</AllowedMethod>
        <AllowedHeader>Range</AllowedHeader>
        <MaxAgeSeconds>3000</MaxAgeSeconds>
        <ExposeHeader>Accept-Ranges</ExposeHeader>
        <ExposeHeader>Content-Range</ExposeHeader>
        <ExposeHeader>Content-Encoding</ExposeHeader>
        <ExposeHeader>Content-Length</ExposeHeader>
        <AllowedHeader>Authorization</AllowedHeader>
    </CORSRule>
</CORSConfiguration>

为了安全起见,在我的 rails 应用程序中,我有:

config.action_dispatch.default_headers = {
      'Access-Control-Allow-Origin' => '*',
      'Access-Control-Request-Method' => %w{GET}.join(",")
    }

还有其他人能够克服这个问题吗?有人知道适用于 pdf.js 和 amazon s3 的 CORS 政策吗?

【问题讨论】:

标签: ruby-on-rails amazon-s3 pdf.js


【解决方案1】:

在我的情况下,问题与 CORS 无关。我必须覆盖 /pdfjs_viewer/viewer.js 并将我的开发和生产 URL 包含在第 7000 行附近的 HOSTED_VIEWER_ORIGINS 声明中。

【讨论】:

  • 想要冒险内容欺骗的人可以取消此保护,在这种情况下,自定义查看器将能够在查看器的域名下显示无关/恶作剧/攻击性内容。为潜在文档的来源添加白名单以提供更好的保护。
【解决方案2】:

如果你想绕过欺骗检测,你可以使用

gem 'pdfjs_viewer-rails', :github => 'MattFenelon/pdfjs_viewer-rails', ref:'615bfd2'

【讨论】:

    猜你喜欢
    • 2022-06-22
    • 1970-01-01
    • 2019-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-09
    • 1970-01-01
    相关资源
    最近更新 更多