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

通过CloudFlare传递源站Cookie失败的问题求助

CloudFlare代理后Set-Cookie丢失导致会话失效问题

问题场景

我们的流量架构为:

Client's request -> Domain on CloudFlare -> A -> Our LB -> Server  

后端服务器会返回以主机名命名的Cookie,LB的iRule已完成代理转发,但经过CloudFlare后,Set-Cookie无法到达客户端,导致会话保存失效,反向流程如下:

Server --*cookie*-> Our LB --*cookie*-> CloudFlare --*cookies are lost*-> Client

已尝试禁用HTTP2、配置页面规则,均未解决问题。附有无CloudFlare时的curl结果对比:

  • 无CloudFlare时:
$ curl https://domain -kv 1> /dev/null
...
< cookie: hostname
< Set-Cookie: cookie=hostname; Domain=domain;Path=/; HttpOnly
  • 有CloudFlare时(缺失Set-Cookie):
$ curl https://domain -kv 1> /dev/null
...
< cookie: hostname

排查与解决方案

  • 检查CloudFlare缓存规则:若页面规则配置了Cache Everything,会导致动态请求的Set-Cookie被忽略。为目标路径添加页面规则,设置Cache Level: Bypass,确保会话相关请求不被缓存。
  • 验证Cookie的Domain属性:确认后端返回的Set-Cookie中Domain值与用户访问的公网域名完全匹配(包括主域/子域关系)。如果是内部域名,CloudFlare会判定为无效并丢弃,需调整LB的iRule或后端服务器,将Domain改为公网访问域名。
  • 检查SSL模式:确保CloudFlare的SSL模式设置为Full或Full (strict),避免使用Flexible模式。Flexible模式下CloudFlare与LB之间为HTTP通信,若Cookie带Secure属性会被过滤。
  • 排查安全规则干扰:临时关闭CloudFlare的WAF或自定义安全规则测试,若Cookie恢复则调整规则,放行目标Set-Cookie头。
  • 确认LB响应完整性:直接请求LB的公网IP(绕过CloudFlare),验证响应中Set-Cookie头是否完整,排除LB转发时的头修改问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 01:55:13