更换域名后WordPress站点Gravatar头像加载失败问题排查
问题:更换WordPress站点域名后Gravatar头像加载失败(ERR_BLOCKED_BY_CLIENT)
- 更换新域名后,所有用户头像、「设置-讨论」里的默认头像列表均无法加载,切换回旧域名则恢复正常
- Chrome开发者工具显示错误:
ERR_BLOCKED_BY_CLIENT - 直接在浏览器输入Gravatar的URL能正常显示图片
- 已禁用本地AVG杀毒软件、所有WordPress插件,未发现服务器/浏览器缓存问题
相关请求信息
- 请求URL:
https://secure.gravatar.com/avatar/caa7f7ac741d667181928dddf7cf2f69?s=32&f=y&r=pg - 引用策略:
strict-origin-when-cross-origin - 无响应头
对应HTML代码
<label> <input type="radio" name="avatar_default" id="avatar_gravatar_default" value="gravatar_default"> <img alt="" src="https://secure.gravatar.com/avatar/caa7f7ac741d667181928dddf7cf2f69?s=32&f=y&r=pg" srcset="https://secure.gravatar.com/avatar/caa7f7ac741d667181928dddf7cf2f69?s=64&f=y&r=pg 2x" class="avatar avatar-32 photo avatar-default" height="32" width="32" loading="lazy" decoding="async"> Gravatar Logo </label>
解决思路及步骤
1. 排查浏览器广告拦截扩展
ERR_BLOCKED_BY_CLIENT绝大多数情况是浏览器扩展拦截了请求,优先检查广告拦截类插件:
- 打开Chrome隐身模式访问新域名,隐身模式默认不加载扩展,要是头像能显示,就逐个排查已装扩展,找到拦截的那个,把新域名加入白名单
- 要是隐身模式也不行,直接卸载所有广告拦截类扩展再测试
2. 确认WordPress域名配置完全更新
即使站点文件没动,新域名可能没在WordPress系统里完全替换,触发跨域拦截:
- 登录后台检查「设置-常规」里的**WordPress地址(URL)和站点地址(URL)**是否都改成新域名,确保两者一致
- 备份数据库后,执行SQL语句批量替换旧域名:
UPDATE wp_options SET option_value = replace(option_value, '旧域名', '新域名') WHERE option_name = 'home' OR option_name = 'siteurl';
3. 调整服务器CORS配置
strict-origin-when-cross-origin的引用策略可能限制新域名加载第三方资源,在服务器端添加CORS响应头:
- Nginx用户:在新域名配置文件中添加
add_header Access-Control-Allow-Origin "*"; add_header Access-Control-Allow-Methods "GET, POST, OPTIONS";
- Apache用户:在
.htaccess文件中添加
Header set Access-Control-Allow-Origin "*"
(后续可以把*改成你的新域名,提升安全性)
4. 更换Gravatar国内镜像源(备选)
如果以上方法都无效,可能是新域名网络环境对secure.gravatar.com有隐性拦截,把Gravatar源换成国内镜像:
- 将以下代码添加到主题的
functions.php文件中:
function replace_gravatar_url($url) { $url = str_replace(array('www.gravatar.com', 'secure.gravatar.com'), 'cn.gravatar.com', $url); return $url; } add_filter('get_avatar_url', 'replace_gravatar_url');
内容的提问来源于stack exchange,提问作者Dennis Bareis
相关产品推荐
相关产品推荐

