WordPress站点加载不全,出现400 (Bad Request)错误求助
解决WordPress站点中Twitter时间线小部件的400 Bad Request错误
首先咱们先拆解这个错误:你碰到的400请求是Twitter官方时间线小部件的加载请求出了问题,而且请求经过了Cloudflare的cdn-cgi路径,大概率是Cloudflare的设置或者小部件本身的配置冲突导致的。下面是一步步的排查和解决方法:
1. 核对Twitter小部件的基础配置
- 先确认你在WordPress里添加的Twitter时间线小部件(不管是用插件还是自定义代码)的时间线ID(错误里的
657829541554057216)是否有效。可以登录Twitter账号,直接访问对应时间线,看看是否能正常打开,有没有被设为私有或者删除。 - 再检查小部件代码里的
domain参数是不是和你的站点域名dev.saudi-nm.com完全一致,别出现拼写错误、多斜杠或者大小写不一致的情况。
2. 排查Cloudflare的规则干扰
因为请求路径里带了cdn-cgi/pe/bag2,这是Cloudflare的性能优化相关路径,很可能是它的规则改写或拦截了Twitter的请求:
- 登录Cloudflare控制台,进入你的站点的Page Rules页面,看看有没有针对
/cdn-cgi/*或者包含syndication.twimg.com的规则,先暂时禁用这些规则,刷新站点测试是否恢复正常。 - 去Speed模块里检查Rocket Loader和Auto Minify功能,这些优化有时候会打乱Twitter嵌入脚本的加载逻辑,尝试暂时关闭Rocket Loader再测。
- 另外看看Security模块下的WAF(Web应用防火墙),检查日志里有没有误拦截
syndication.twimg.com请求的记录,如果有,给这个域名加个白名单规则。
3. 替换为官方最新的嵌入代码
如果之前是用WordPress插件加的小部件,试试换成Twitter官方生成的嵌入代码:
- 用Twitter官方的嵌入工具(直接在Twitter平台里找“嵌入时间线”的选项),输入你的账号URL生成最新代码。
- 在WordPress的自定义HTML模块或者主题文件里替换掉原来的代码,刷新页面看看400错误还会不会出现。
4. 清除所有层级的缓存
- 先清掉WordPress缓存插件(比如WP Rocket、W3 Total Cache这些)的缓存,再去Cloudflare控制台的缓存选项里选择“清除所有缓存”。
- 有时候旧缓存会保留过期的请求参数(比如Twitter请求里的
t时间戳),导致请求失效触发400错误,清缓存大概率能解决这类问题。
5. 检查站点SSL配置
确保你的dev.saudi-nm.com已经正确配置了SSL证书,并且Cloudflare的SSL模式设为Full或者Full (strict)。要是SSL配置有问题,跨域请求(Twitter用的是HTTPS,你的站点如果有混合内容问题)很容易出错误。
要是以上步骤都试过还是不行,你可以打开浏览器的Network面板,复制完整的请求头信息看看有没有额外提示,或者试试在本地环境绕过Cloudflare加载站点,确认到底是Cloudflare的问题还是Twitter那边的限制。
内容的提问来源于stack exchange,提问作者Nasser AlMutairi
相关产品推荐
相关产品推荐

