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

AMP CDN下无法访问受CORS保护的Web字体资源解决方案咨询

解决AMP CDN无法访问受CORS保护的Web字体问题

你遇到的核心问题其实是AMP CDN代理请求时携带的Origin头和你预期的用户访问域名不一致,导致你的CORS规则没有放行请求。我来帮你拆解问题和对应的解决方案:

问题根源

AMP CDN(比如cdn.ampproject.org)在替终端用户请求你的Web字体时,发送的Origin请求头是AMP CDN自身的域名,而非用户浏览器所在的域名。如果你的源站正则只匹配用户域名,自然不会返回允许AMP CDN访问的CORS响应头,最终导致资源加载失败。

解决方案步骤

1. 调整Origin匹配规则,加入AMP CDN域名

把AMP CDN的域名https://cdn.ampproject.org添加到你的正则匹配列表中。这样当AMP CDN发起请求时,源站会返回Access-Control-Allow-Origin: https://cdn.ampproject.org,允许它获取并缓存资源。

  • 如果你需要限制仅特定用户域名+AMP CDN访问,确保正则同时覆盖这两类Origin(比如用(https://your-allowed-domains\.com|https://cdn\.ampproject\.org)这类规则)。

2. 用curl验证配置是否生效

模拟AMP CDN的请求来测试你的源站响应:

curl -H "Origin: https://cdn.ampproject.org" -I https://your-domain.com/path/to/protected-font.woff2

检查响应头必须包含:

  • Access-Control-Allow-Origin: https://cdn.ampproject.org
  • Vary: Origin(你已经配置了这个,保持即可,它能确保缓存服务器正确区分不同Origin的响应)

3. 确认AMP页面的字体加载方式合规

确保你的AMP页面中Web字体是通过AMP允许的方式加载的,比如使用<link rel="preload" as="font" crossorigin>标签,或者AMP官方推荐的字体加载方案,避免因加载方式不符合AMP规范导致的额外问题。

额外说明

这种配置既能满足你保护资源的法律要求——只有你授权的AMP CDN和指定用户域名能直接访问源站资源,终端用户是通过AMP CDN的缓存间接获取;又能兼容AMP的CDN代理机制,让资源正常加载。

内容的提问来源于stack exchange,提问作者Nils Goroll

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:50:35