- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我注意到字体总是受跨域资源共享(CORS)的约束,而图像则不受约束。
情景
网址:在本网站上,我们对上传资源有限制。我们只能上传 HTML 文件。所有外部文件都指向网站 B。
网站B:所有资源均上传至本网站。
图像没问题,工作正常,但字体不是。以下是错误日志的示例。我很好奇是不是一直都是这样?像字体总是受 CORS 影响而图像不是?
在“website-b.com/font.ttf?”访问字体来自“website-a.com”的来源已被 CORS 策略阻止:请求的资源上不存在“Access-Control-Allow-Origin” header 。因此,不允许访问 Origin 'website-a.com'。
问题
最佳答案
此处的要求在 Font fetching requirements section in the CSS Fonts spec 中定义:
For font loads, user agents must use the potentially CORS-enabled fetch method defined by the [HTML5] specification for URL's defined within @font-face rules. When fetching, user agents must use "Anonymous" mode, set the referrer source to the stylesheet's URL and set the origin to the URL of the containing document.
The implications of this for authors are that fonts will typically not be loaded cross-origin unless authors specifically takes steps to permit cross-origin loads. Sites can explicitly allow cross-site loading of font data using
Access-Control-Allow-Origin
.
cors
:
+-----------+-----------+---------------------------------------------------------+
| anonymous | Anonymous | Requests for the element will have their mode set to |
| | | "cors" and their credentials mode set to "same-origin". |
+-----------+-----------+---------------------------------------------------------+
因此,鉴于所有这些,以下是您问题的具体答案:
- Is typeface always subject to CORS policy and why?
The primary reason is that font vendors want Web authors to limit use of fonts to their own sites, and Web authors can't easily and reliably do that unless we provide a same-origin restriction
The same-origin policy applies to pretty much all new resource types on the web. There's only a handful of legacy resource types (images, scripts, css, and ugh, audio/video (barely missed the boat on those)) that let cross-origin pages hotlink without restriction.
This is now a standard security practice for the web.
- Why are images not subject to CORS policy?
- If the typeface is subject to CORS, how is it differs from the image in terms of CORS?
img
元素加载图像,您使用 XHR 或 Fetch API 来请求它,然后您的浏览器将对该图像请求应用同源限制,就像您的浏览器对您请求跨域的任何其他内容一样。
img
element 早在我们知道我们现在所知道的东西之前就已经设计好了,因此它在浏览器中的跨域 OK 处理与我们现在对新功能的默认同源处理不同。
img
元素实际上是这里规则的异常(exception),而字体的处理与浏览器现在用于所有新功能的处理一致。
关于image - 字体和图像跨域资源共享,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43971229/
我有兴趣了解 AWS 物理服务器的硬件资源(CPU、磁盘、网络等)在不同应用程序之间共享的方式。人们是否有过在 AWS 上运行的服务发生莫名其妙的性能变化的经历,而您已成功将其归因于共享物理资源的另一
假设我们有 3 个人,Alice、Bob 和 Charlie。 假设他们每个人都有一种资源,Aplles、Bannanas 和 Coconuts。 他们每个人都有 3 个这种资源。 该算法的目标是进行
我是一名优秀的程序员,十分优秀!