美文网首页
React 使用网络字体

React 使用网络字体

作者: AricWu | 来源:发表于2019-02-14 17:22 被阅读4次

    遇到的问题

    react 开发过程中,使用本地的字体时,可以在index.css中加入此行

    @font-face {
        font-family: "AvenirLT-Medium";   
        src: url(./Resources/Fonts/AvenirLTMedium.ttf);  
    }
    

    font-family 是自定义的字体名
    src 是字体文件的本地地址
    然后再使用的控件中设置font-family样式就可以了。

    但是在使用网络字体的时候,本以为url换成网络地址就OK了,但是实际过程中发现字体并不显示(Chrome和FireFox都不显示,Safari确意外可以显示)

    @font-face {
        font-family: "AvenirLT-Medium";
        src: url("http://linkplay-dev.oss-cn-beijing.aliyuncs.com/AvenirLTMedium.ttf");
    }
    

    控制台中出现


    image.png

    解决方法

    出现这个问题的原因是CORS验证机制,当一个请求url的协议、域名、端口三者之间任意一与当前页面地址不同即为跨域。如果字体所在的域名与我们网页所在域名不同,就会出现这个问题。
    出于安全原因,浏览器限制从脚本中发起的跨域HTTP请求。默认的安全限制为同源策略, 即JavaScript或Cookie只能访问同域下的内容。

    如果字体的资源文件是在自己的服务器上,则需要在服务器设置白名单。
    如Nginx,修改Nginx的conf目录下nginx.conf,添加以下代码:

    location ~* \.(eot|ttf|woff|svg|otf)$ {
         add_header Access-Control-Allow-Origin *;
    }
    

    如果是像我一样使用了阿里云OSS或者其他OSS,就要在OSS中做一些配置


    image.png

    相关文章

      网友评论

          本文标题:React 使用网络字体

          本文链接:https://www.haomeiwen.com/subject/fkmqsqtx.html