You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django自定义字体本地正常,DigitalOcean生产环境无法加载

问题分析与解决方案

针对你遇到的DigitalOcean Spaces部署Django项目后字体文件403无法加载的问题,以下是几个核心原因及对应解决方法:

1. 字体文件权限未设置为公开可读

其他静态文件正常但字体403,大概率是字体文件的存储权限为私有。DigitalOcean Spaces默认上传的文件权限是私有,需要手动或通过配置改为公开可读:

  • 手动修改:在Spaces控制台找到static/fonts下的字体文件,右键选择“Edit Permissions”,设置为“Public Read”。
  • 自动配置:如果使用django-storages,在settings.py中添加:
    AWS_DEFAULT_ACL = 'public-read'
    
    确保执行collectstatic时,所有静态文件(包括字体)都会被设置为公开权限。

2. CORS配置存在细节遗漏

即使配置了CORS,若规则未覆盖字体加载的需求,仍会触发403。需检查以下配置项:

  • Origin:必须填写你的应用域名(如https://your-app-domain.com),测试阶段可临时用*,生产环境建议指定具体域名。
  • Allowed Methods:需包含GET, HEAD, OPTIONS(浏览器加载字体前会发送OPTIONS预检请求)。
  • Allowed Headers:需允许Content-Type。
  • 修改CORS后,务必用无痕浏览器测试,避免浏览器缓存旧规则。

3. 静态文件收集路径错误

确认collectstatic是否将字体文件上传到了Spaces的正确路径:

  • 尝试直接访问字体文件的完整URL(如https://your-space-endpoint/static/fonts/Canto-Bold.woff2):
    • 若返回404:说明路径错误,检查STATIC_ROOT和AWS_STORAGE_BUCKET_NAME配置,确保static/fonts目录正确上传到Spaces根目录下。
    • 若返回403:回到权限或CORS配置排查。

4. WOFF2文件MIME类型未正确配置

DigitalOcean Spaces默认可能未识别.woff2的MIME类型,导致浏览器拒绝加载。需手动添加MIME规则:

  • 在Spaces控制台的“Settings”中找到“MIME Types”,添加新规则:
    • 扩展名:.woff2
    • MIME类型:font/woff2

内容的提问来源于stack exchange,提问作者Thomas Doll-Datema

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 04:52:24