PDF.js 是一个用于解析和渲染 PDF 文件的 JavaScript 库,它可以在浏览器中直接加载和显示 PDF 文件。当涉及到跨域访问文件时,会遇到浏览器的同源策略限制,这会导致无法直接从不同的源加载 PDF 文件。
同源策略:浏览器的一种安全机制,限制了一个源的文档或脚本如何与另一个源的资源进行交互。只有协议、域名和端口都相同的两个 URL 才被认为是同源的。
问题:使用 PDF.js 跨域访问文件时,浏览器会阻止加载,报错“CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource”。
原因:服务器没有设置允许跨域访问的响应头,导致浏览器认为这是一个安全风险并阻止了请求。
以下是一个简单的 PDF.js 使用示例,假设服务器已正确设置 CORS:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>PDF.js Example</title>
<script src="https://mozilla.github.io/pdf.js/build/pdf.js"></script>
</head>
<body>
<canvas id="pdf-canvas"></canvas>
<script>
pdfjsLib.GlobalWorkerOptions.workerSrc = 'https://mozilla.github.io/pdf.js/build/pdf.worker.js';
const url = 'http://example.com/pdf/example.pdf';
const loadingTask = pdfjsLib.getDocument(url);
loadingTask.promise.then(function(pdf) {
pdf.getPage(1).then(function(page) {
const viewport = page.getViewport({ scale: 1.5 });
const canvas = document.getElementById('pdf-canvas');
const context = canvas.getContext('2d');
canvas.height = viewport.height;
canvas.width = viewport.width;
const renderContext = {
canvasContext: context,
viewport: viewport
};
page.render(renderContext);
});
});
</script>
</body>
</html>
通过上述方法,可以有效解决 PDF.js 跨域访问文件时遇到的问题。
领取专属 10元无门槛券
手把手带您无忧上云