Cloudflare Bot Protection主域与子域验证码状态共享问题咨询
解决方案:Cloudflare验证码验证状态跨子域同步
核心方案:配置Cloudflare验证Cookie跨域共享
Cloudflare Managed Challenge的验证状态通过cf_clearance等Cookie存储,默认Cookie域仅绑定当前域名,导致子域无法识别主站的验证状态。通过修改Cookie属性,让验证Cookie覆盖根域名,即可实现跨子域共享验证状态。
具体配置步骤
- 登录你的Cloudflare企业账户,进入
example.com根域名管理面板 - 导航到Rules > Transform Rules > Modify Cookie,创建新规则
- 匹配条件:设置为
Host匹配*.example.com(覆盖主域和所有子域),同时可添加条件确保仅针对Cloudflare验证相关的请求(比如匹配请求中存在cf_clearanceCookie) - 操作设置:
- 选择
Modify现有Cookie,目标Cookie为cf_clearance - 将Domain属性改为
.example.com(前缀点表示覆盖所有子域) - 设置Path为
/,SameSite为None,勾选Secure(HTTPS环境必填,且SameSite=None要求Cookie为Secure)
- 选择
前端配合设置
你的Vue应用发起search.example.com的API请求时,需要在AJAX配置中开启withCredentials: true,确保浏览器携带跨域Cookie到子域请求。
备选方案
如果上述Cookie修改规则无法生效,可尝试以下方式:
- Cloudflare Access统一会话:将主站和子域都纳入Cloudflare Access保护,通过统一的身份验证会话共享验证状态,用户在主站完成验证后,子域请求会自动继承会话
- 自定义令牌验证:主站完成Cloudflare验证后,后端生成自定义令牌,前端将令牌通过请求头或参数携带到子域API,子域的Cloudflare规则验证令牌有效性(需配合Cloudflare Worker或自定义规则实现)
关于独立子域的优势
保持search.example.com作为独立端点的架构,更便于后续单独配置CDN策略、流量路由、缓存规则,也支持横向扩容搜索服务,因此优先推荐跨域Cookie配置方案。
内容的提问来源于stack exchange,提问作者Meska
相关产品推荐
相关产品推荐

