在尝试显示PDF时出现的错误信息
我在Drupal 11 CMS中,使用Solo主题,以pdf形式展示二战时期的信件。代码是通过Github CoPilot AI生成的。与其把 pdf.min.js 和 pdf.worker.min.js 放在文件结构中,它们通过 cdn.jsdelivr.net/npm 提供。代码片段如下:
1.
<script src="https://cdn.jsdelivr.net/npm/[email protected]/build/pdf.min.js"></script>
js const workerSrc = "https://cdn.jsdelivr.net/npm/[email protected]/build/pdf.worker.min.js";
用于显示PDF的页面的链接是可用的。页面排版和导航控件可见。但PDF无法加载。我得到以下错误信息:
PDF.js failed to load from jsDelivr.
我又尝试了另一个CDN,但错误信息相同。
从开发者工具控制台,我看到一个类似但更详细的错误信息:
The resource from “https://cdn.jsdelivr.net/npm/[email protected]/build/pdf.min.js” was
blocked due to MIME type (“text/plain”) mismatch (X-Content-Type-Options: nosniff).
在使用CDN解决方案之前:我尝试创建一个自定义模块来显示PDF文件,但站点被破坏,无法正常运作。
其他信息: 网站URL: 2ad67ark.com
我迫切需要一个解决方案。非常感谢任何帮助。
解决方案
这其实不是Drupal损坏的问题,而是浏览器的安全问题。关于MIME类型的错误(“text/plain” 与 nosniff 不匹配)意味着浏览器拒绝执行 pdf.min.js,因为它是以错误的Content-Type头发送的,因此PDF.js实际上根本没有加载。这也解释了为什么你的页面布局和控件都出现,但PDF本身没有渲染。在较新版本的 pdfjs-dist(v4及以上)中,文件结构发生了变化,某些CDN路径如 /build/pdf.min.js 的行为不像早期示例那样,这可能会触发此问题。最简单的修复办法是要么使用像Cloudflare (cdnjs) 那样的稳定CDN构建,要么降级到稳定的3.x版本的PDF.js。对于Drupal的生产站点,最可靠的长期解决方案是下载正确的PDF.js文件,并通过你主题的libraries.yml本地引入,而不是依赖CDN。
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。