1. 程式人生 > >CDN引起的 字型跨域問題,解決方案和問題

CDN引起的 字型跨域問題,解決方案和問題

今天部署外網上線事宜,前端我來配置了CDN,阿里雲的 CDN服務,其他都沒問題,簡直了  

阿里雲的CDN  GZIP壓縮也是夠強

開啟GZIP壓縮後,原來我幾十K 的 JS檔案,直接變成了 不足1K ,秒載入,你妹,我們專案組高興了一把。

這網站還不是秒開麼 ?

----------------------------------------------

看效果 :

通過這個 我得到也給結論, 在程式碼檔案結構 儘量優化的同時,能力再強已經到極限了,但你伺服器辣雞,搭配不當,你程式碼優化上天 也是徒勞啊。

你不怎麼優化, 伺服器 各種技術配置到位的話, now你也看到了,我一個系統首頁也不過用了幾百ms,比我本地開發環境都快(mdzz,怪不得阿里這麼貴)!

------------------------------  吹牛逼結束 ,開始記錄今天遇到的一個問題  

*  字型 font  跨域載入問題   看圖

注:由於採用了cdn 加速, 本地測試 就出現瞭如此問題,其他一切正常的額!

那麼本問題直接導致 , css 字型 圖示無效,呵呵噠,顏值瞬間沒了。這能忍?

原因是:字型檔案在CDN伺服器上、專案部署在自己的伺服器上,字型檔案就出現了跨域載入的問題。

於是乎,開始了Google之旅,好吧,小夥伴大部分都給出瞭如下建議: 摘自 網路。親測有效

1、服務端設定XXX,具體的大家可以直接去搜索,分為apache和nginx兩種設定方法,因為我很討厭折騰這個務器,在我們坑,也無需弄我折騰,所以沒測試過,這個上線之後 親測有效,畢竟同源嘍

2、將字型檔案以base64編碼的方式引入內嵌到樣式檔案中。這個本人嘗試過,書寫格式如下:

@font-face {
  font-family: 'icon-tb';
  src: url('../fonts/icon-tb.eot?59lb71');
  src: url('../fonts/icon-tb.eot?#iefix59lb71') format('embedded-opentype'), url('../fonts/icon-tb.woff?59lb71') format('woff'), url('../fonts/icon-tb.ttf?59lb71') format('truetype'), url('../fonts/icon-tb.svg?59lb71#icon-tb') format('svg');
  font-weight: normal;
  font-style: normal;
}

改成 

@font-face {
  font-family: 'icon-tb';
  Src : url("data:application/x-font-ttf;charset=utf-8;base64,XXXXXXXXXXXX") format("ttf");
}rc : url("data:application/x-font-ttf;charset=utf-8;base64,XXXXXXXXXXXX") format("ttf");
}

實際使用過程將那一長串”X“換成自己的base64編碼即可。

3、將字型檔案放到專案的目錄下,也即讓它們同源即可,好吧,都是一個爹生的,也不認生啦,問題也就解決了。這個方法是最後採取的,驗證OK。

相關推薦

CDN引起字型問題解決方案問題

今天部署外網上線事宜,前端我來配置了CDN,阿里雲的 CDN服務,其他都沒問題,簡直了   阿里雲的CDN  GZIP壓縮也是夠強 開啟GZIP壓縮後,原來我幾十K 的 JS檔案,直接變成了 不足1K ,秒載入,你妹,我們專案組高興了一把。 這網站還不是秒開麼 ? -

前端-關於CORS解決方案面向服務端

red 瀏覽器 環境 和我 methods retrieve name 後臺 一件事 最近自己在寫後臺管理系統的時候,並沒有采用jsp、freemaker、葉子等模板技術,而是由後端提供數據api,前端通過AJAX和JQuery來動態操作頁面上的一些div、table元素,

前後端互動問題解決方案資源共享(CORS)

跨域資源共享(CORS) 普通跨域請求:只服務端設定Access-Control-Allow-Origin即可,前端無須設定,若要帶cookie請求:前後端都需要設定。 需注意的是:由於同源策略的限制,所讀取的cookie為跨域請求介面所在域的cookie,而非當前頁。如

通用版父頁面訪問iframe裡面的內容解決方案jupyter+tornado通訊解決方案

1、問題:獲取jupyter裡面的內容現在已經將jupyter放進iframe裡面,現在的問題描述為:在父頁面獲取iframe裡面的內容,iframe裡面就是jupyter,這裡的父頁面是自己搭建的tornado伺服器開啟的頁面,網址為127.0.0.1:9000,ifram

C#進階系列——WebApi 問題解決方案:CORS

dea ati ice pro target default 異常 測試工具 復雜 前言:上篇總結了下WebApi的接口測試工具的使用,這篇接著來看看WebAPI的另一個常見問題:跨域問題。本篇主要從實例的角度分享下CORS解決跨域問題一些細節。 WebApi系列文章

ajax請求解決方案

tro cti jquer 解決方案 tab all ajax跨域 自帶 b-s 大家好,今天我們學習了js的跨域請求的解決方案,由於JS中存在同源策略,當請求不同協議名,不同端口號、不同主機名下面的文件時,將會違背同源策略,無法請求成功!需要進行跨域處理! 方案一、後臺P

ajax 請求解決方案

allow option ajax cred eth post delet 求解 delete response.setHeader("Access-Control-Allow-Origin", "*"); response.setHeader("Access

常見解決方案

div 請求 如果 主域 安全問題 highlight chrom call navig 由於考慮到安全性問題,HTML的同源策略不允許JavaScript進行跨域操作,但是隨著web端功能越來越多,對跨域需求逐漸增大,於是乎便催生了很多解決跨域的方法,通過網絡搜索和資

laravel 5.5 oauth2.0 問題解決方案

title apach war laravel jsonp 另一個 over gin strong 一、laravel-Cors 安裝 在終端執行安裝命令如下: composer require barryvdh/laravel-cors

[轉]No 'Access-Control-Allow-Origin' header is present on the requested resource.'Ajax訪問解決方案

不能 ade 方式 ole 相同域名 all log head 允許 原 https://blog.csdn.net/zhoucheng05_13/article/details/53580683 No ‘Access-Control-Allow-Origin‘ heade

CORS 與 TP5中解決方案

在做專案過程中,使用Vue-element-admin作為前端,ThinkPHP5作為後端框架進行開發,會遭遇跨域問題,本文給出ThinkPHP5解決跨域 1.CORS的概念     CORS(Cross-Origin Resource Sharing 跨源資源共享),當

angularjspost解決方案

前端同學李雷和後臺同學韓梅梅分別在自己電腦上進行開發,後臺介面寫好的時候,李雷改動完就把前端程式碼上傳到gitlab,然後在測試機上從gitlab上拉下來,然後在測試機上移動最新程式碼,最後回到本機重新整理頁面。有時候碰到網速不好的情況傳個git傳了半天,或者李雷剛上傳完發現少寫了一個單詞,加上再傳

WebApi多種解決方案

關於WebAPI跨域踩到的一點坑 最近在嘗試前後端分離的WebAPI+AngularJS方案,在率先處理授權的時候,踩到了一點WebAPI跨域的坑,其實嚴格意義上來說也不算是坑吧,只是我自己對WebAPI不熟悉而已,這裡我與大家分享一下。 先說一下我這邊遇到的情況: 我是在做登入

javaWeb專案問題解決方案

1.簡單的servlet專案 1.配置一個filter過濾器,過濾所有的請求,並且設定響應頭   package Filter; import javax.servlet.*; import javax.servlet.http.HttpServletRes

vue+django問題解決方案(前後端兩種方案

1.Vue前端設定代理(方案一) 我們在使用vue-cli啟動專案的時候npm run dev便可以啟動我們的專案了,通常我們的請求地址是以localhost:8080來請求介面資料的,localhost是沒有辦法設定cookie的。  我們可以在vu

Geoserver終極解決方案

在其他程式呼叫使用Geoserver時,可能會遇到跨域 如 Access to XMLHttpRequest at 'http://localhost:8080/geoserver/gwc/service/tms/1.0.0/KylinWS:[email protected]:[e

No 'Access-Control-Allow-Origin' header is present on the requested resource.'Ajax訪問解決方案

出現該錯誤是由於存在網站跨域訪問的問題。 什麼是網站跨域,簡單來講,當你通過ajax來請求或傳送資料時,兩個域名之間不能跨過域名來發送請求或者請求資料,瀏覽器會認為它是不安全的。 解決方式: 1、伺服器端解決方案 設定響應報文頭 response.setHeader

JS請求解決方案

1 js跨域請求 1.1 域名的比較 1.2 什麼是JS跨域: 1.3 預設情況下JS不允許跨域 1.4Access-Control-Allow-Origin 2 跨

WebApi 問題解決方案:CORS

前兩篇文章介紹了WebApi專案的建立和測試,今天來說說WebApi跨域訪問的問題。本篇主要介紹了利用CORS解決跨域問題一些細節和具體步驟,下面來看看吧。 一、釋出WebApi 既然是解決WebApi跨域問題,那WebApi(http://localhost:9002)

No 'Access-Control-Allow-Origin' header is present之 為什麼會解決方案

1 瀏覽器的限制 2 跨域 3 瀏覽器傳送的是 XHR (XMLHttpRequest)請求 當以上三個條件都滿足時瀏覽器會丟擲跨域請求異常(記住是瀏覽器丟擲的異常,和服務端沒太大關係),在講跨域請求解決方案前先了解幾個問題。 1 http請求中,哪些是常見的簡單請求,哪些是非簡單請