PDF 预加载的 CORB 问题

CORB issue with PDF preload

我正在优化我的 PDF 查看器应用程序,我想对 PDF 使用 link 预加载。 PDF 下载是通过 XHR 请求触发的(后台只是 PDF.js 库)。

我的想法是预加载 PDF,然后当加载处理 PDF 下载的 JS 包时,PDF 已经在内存中或至少有一部分内存中,以便用户更快地看到它。

问题是 Chrome 阻止了我的请求说:

Cross-Origin Read Blocking (CORB) blocked cross-origin response https://core.ac.uk/download/pdf/159107963.pdf with MIME type application/pdf. See https://www.chromestatus.com/feature/5629709824032768 for more details.

我不知道为什么会这样。允许 CORS,并且不存在 X-Content-Type-Options: np-sniff。有什么想法吗?

这里是 MWE。只需打开控制台,您就会看到错误。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Test preload</title>
  <link rel="preload" href="https://core.ac.uk/download/pdf/159107963.pdf" as="fetch" type="application/pdf"/>
</head>
<body>
</body>
</html>

您需要添加 crossorigin 属性以预加载跨域提取请求。阅读更多 here and here.

link应该配置如下:

<!-- use anonymous (default if blank) for credentials: 'same origin' -->
<link rel="preload" href="https://core.ac.uk/download/pdf/159107963.pdf" as="fetch" type="application/pdf" crossorigin />

<!-- set it to use-credentials for credentials: 'include' -->
<link rel="preload" href="https://core.ac.uk/download/pdf/159107963.pdf" as="fetch" type="application/pdf" crossorigin="use-credentials" />