如何解决克隆网站时 CSS(尤其是 Web 字体)因 CORS 被阻止的问题
技术百科
霞舞
发布时间:2026-01-28
浏览: 次 克隆网站时,html 无法正确加载外部 css 或 web 字体,通常源于跨域资源共享(cors)策略限制——尤其当字体文件(如 .woff2)被拦截时,需在服务器端配置允许跨域访问。
当你通过 GitHub Pages(如 sunnyparks.github.io)托管克隆站点时,浏览器会严格执行同源策略。原站(personalfinanceclub.com)引用的 Web 字体(例如 Google Fonts 或自托管的 .woff2 文件)若未显式声明跨域许可,现代浏览器(Chrome、Firefox 等)将拒绝加载,并在控制台报错:
Access to font at 'https://www.personalfinanceclub.com/fonts/xxx.woff2' from origin 'https://sunnyparks.github.io' has been blocked by CORS policy.
⚠️ 注意:GitHub Pages 不支持 .htaccess,因此原答案中针对 Apache 的
✅ 正确解决方案(适配 GitHub Pages):
-
本地化字体资源(推荐)
下载原站使用的字体文件(通过浏览器开发者工具 → Network → Filter font → 右键“Open in new tab”保存 .woff2/.woff),放入项目目录(如 /fonts/),并更新 CSS 中的 @font-face 源路径为相对地址:
@font-face {
font-family: 'Inter';
src: url('./fonts/inter-var-latin.woff2') format('woff2');
font-weight: 100 900;
font-display: swap;
}-
使用支持 CORS 的 CDN 字体
若原站使用 Google Fonts,确保 标签中添加 crossorigin 属性(Google Fonts 显式支持匿名跨域):
-
检查并修复所有 CSS 路径
克隆时,CSS 中的 url() 路径(如背景图、图标字体)常为绝对路径(/assets
/css/style.css)或协议相对路径(//cdn.example.com/font.woff2)。请统一改为相对路径或完整 HTTPS URL,避免 404 或跨域问题。
? 调试建议:
- 打开浏览器 DevTools(F12)→ Network 选项卡 → 刷新页面 → 筛选 Font 或 CSS → 查看状态码(404?Blocked by CORS?);
- 在 Console 中搜索 Failed to load resource 或 CORS 关键词,精准定位被拦截的资源。
? 总结:CORS 问题本质是服务端响应头缺失 Access-Control-Allow-Origin。对于静态托管平台(GitHub Pages、Vercel、Netlify),你无法修改服务端响应头,因此必须通过资源本地化或选用合规 CDN绕过限制——这是前端克隆项目的标准实践。
# ai
# 浏览器
# css
# 工具
# https
# go
# html
# console
# chrome
# git
# github
# access
# 前端
# apache
# cdn
# Filter
# 跨域
# firefox
# Resource
相关栏目:
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
AI推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
SEO优化<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
技术百科<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
谷歌推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
百度推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
网络营销<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
案例网站<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
精选文章<?muma echo $count; ?>
】
相关推荐
- Linux如何使用grep搜索文件内容_Linux
- Win10怎样设置多显示器_Win10多显示器扩展
- Windows电脑如何进入安全模式?(多种按键方法
- PHP 中 require() 语句返回值的用法详
- php查询数据怎么分组_groupby分组查询配合
- Win11怎么关闭通知中心_Windows11系统
- Win11怎么清理C盘虚拟内存_Win11清理虚拟
- Go 语言标准库为何不提供泛型 Contains
- GML (Geography Markup Lan
- c# 如何用c#实现一个支持优先级的任务队列
- c++的位运算怎么用 与、或、异或、移位操作详解【
- 如何在Golang中解压文件_Golang com
- Mac如何整理桌面文件_Mac使用堆栈功能一键整理
- Win10怎么限制单程序CPU占用上限_Win10
- Win11如何关闭小娜Cortana Win11禁
- PHP cURL GET请求:正确设置请求头与身份
- c++获取当前时间戳_c++ time函数使用详解
- Mac如何修改Hosts文件?(本地开发与屏蔽网站
- XML的“混合内容”是什么 怎么用DTD或XSD定
- Win11怎么设置桌面图标间距_Windows11
- PHP 中如何在函数内持久化修改引用变量的指向
- 如何使用Golang开发基础文件下载功能_Gola
- C++如何解析JSON数据?(nlohmann/j
- mac怎么打开终端_MAC终端Terminal使用
- Win11怎么关闭触摸键盘图标_Windows11
- 如何在 ACF 中正确更新嵌套多层 Group 字
- C++ static_cast和dynamic_c
- 如何有效拦截拼接式恶意域名的垃圾信息
- Mac的“调度中心”与“空间”怎么用_Mac多桌面
- Win11怎么打开注册表_Windows 11注册
- Win10闹钟铃声怎么自定义 Win10闹钟自定义
- Windows10系统怎么查看显卡驱动_Win10
- c++怎么用jemalloc c++替换默认内存分
- Mac的访达(Finder)怎么用_Mac文件管理
- php本地部署支持nodejs吗_php与node
- PHP怎么接收URL中的锚点参数_获取#后面参数值
- Python随机数生成_random模块说明【指导
- MAC如何设置网卡MAC地址克隆_MAC终端修改物
- Python变量绑定机制_引用模型解析【教程】
- php打包exe如何加密代码_防反编译保护方法【技
- C++如何编写函数模板?(泛型编程入门)
- 一文教你快速开通网站LOGO图
- Win11任务栏怎么调到左边_Win11开始菜单居
- 如何使用Golang构建简易投票统计功能_Gola
- Win10怎么关闭自动更新错误弹窗_Win10策略
- MAC怎么解压RAR格式文件_MAC第三方解压工具
- Python迭代器生成器进阶教程_节省内存与懒加载
- 如何使用Golang encoding/json解
- 如何使用Golang实现Web表单数据绑定_自动映
- 网站内页做seo排名怎么做?


QQ客服