为了正确地预加载字体文件,我们被告知我们总是需要在我们的标签上应用crossorigin属性,例如:
如上所述,一个有趣的应用场景是字体文件。由于各种原因,必须使用匿名模式CORS来获取它们(请参阅字体获取要求)。
这似乎与我对CORS及其必要性的理解相矛盾。我确信有很好的理由,但我找不到。在任何人提供我所说的相同文档之前,请查看下面:
<link rel="preload" href="fonts/comicsans.woff2" as="font" type="font/woff2" crossorigin>
有人能给我真正的原因吗?我只能在MDN上找到一些链接,它们只是规定了这个要求,没有详细说明为什么:
https://developer.mozilla.org/en-US/docs/Web/HTML/Link_types/preload#cors-enabled_fetches
当预加载启用CORS(例如fetch()、XMLHttpRequest或字体)的资源时,需要特别注意在您的<link>
元素上设置crossorigin属性,以匹配资源的CORS和凭据模式,即使fetch不是跨源的也需要这样做。如上所述,一个有趣的应用场景是字体文件。由于各种原因,必须使用匿名模式CORS来获取它们(请参阅字体获取要求)。
这似乎与我对CORS及其必要性的理解相矛盾。我确信有很好的理由,但我找不到。在任何人提供我所说的相同文档之前,请查看下面:
https://drafts.csswg.org/css-fonts/#font-fetching-requirements
我真的希望有一个深入的答案来自真正了解为什么这是一个要求,以及它的目的是什么的人,同时提供一些证据(文档等)来支持。