推送的资源会被下载两次,并会发出有关跨域的警告

时间:2019-11-03 13:16:26

标签: cross-domain http2 preload server-push

我尝试使用http / 2 server-push在Laravel网站中预加载一些资产。

<!-- Preload -->
<link href="/fonts/Logo.woff" as="font" type="font/woff" rel="preload" crossorigin>
<link href="/css/app.css" rel="preload" as="style" type="text/css" crossorigin>
<link href="/js/app.js" rel="preload" type="application/javascript" as="script" crossorigin>
<!-- Use -->
<link href="/css/app.css" rel="stylesheet">
<script type="module" src="/js/app.js"></script>

我正在使用Middleware设置链接标题。

但是,脚本和字体被下载了两次(推送和正常请求)

它们都还会发出警告

“找到了'https://localhost/fonts/Logo.woff'的预加载,但未使用,因为请求凭证模式不匹配。请考虑看看crossorigin属性。”

“找到了'https://localhost/js/app.js'的预加载,但未使用,因为请求凭证模式不匹配。请考虑看看crossorigin属性。”

我试图从所有三个标签中删除crossorigin,但这并不能解决问题。还尝试了crossorigin="use-credentials"crossorigin="anonymous"之类的不同组合。

1 个答案:

答案 0 :(得分:0)

以防万一有人遇到相同的问题。 链接HTTP标头必须包含用于字体/脚本的跨域,但不能用于CSS /图像