我尝试使用 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”的预加载,但未使用,因为请求凭据模式不匹配。请考虑查看跨域属性。”
“已找到“https://localhost/js/app.js”的预加载,但未使用,因为请求凭据模式不匹配。请考虑查看跨域属性。”
我尝试从所有三个标签中删除 crossorigin
,但这并没有解决问题。还尝试了不同的组合,例如 crossorigin="use-credentials"
或 crossorigin="anonymous"
。
最佳答案
以防万一有人遇到同样的问题。 链接 HTTP header 必须包含字体/脚本的跨源,但 CSS/图像不包含跨源
关于cross-domain - 推送的资源被下载两次并出现跨域警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58680510/