腾讯云EdgeOne导致的请求400错误解决办法

2025年10月26日17:57:24 发表评论 6 ℃

最近上线一个香港项目,使用了腾讯云的EdgeOne,已经在UAT测试没有任何问题。

生产上线以后发现内页图片无法访问,全部400错误:

腾讯云EdgeOne导致的请求400错误解决办法

腾讯云EdgeOne导致的请求400错误解决办法

甚至部分api地址也是不定时的报错400

腾讯云EdgeOne导致的请求400错误解决办法

更甚至首页有时候直接就报错400

腾讯云EdgeOne导致的请求400错误解决办法

国内访问很高的概率出现400错误,但是只要一翻墙,访问就正常,但是在香港、澳大利亚、新加坡也有部分客户访问会出现400错误。

但是一样配置的UAT一切正常,生产环境唯一不一样的就是域名。

在花了两天时间排查了CDN、安全防护所有一切可能以后,向腾讯云提交了工单。

得到了这么一个结果:

背景说明:Domain Fronting 防护机制

在 2023年起,香港政府及其承包供应商对 Domain Fronting(域名前置)攻击要求加强防护。

该攻击方式的原理是:

攻击者可以伪造 TLS 握手里的 SNI(Server Name Indication) 和 HTTP 请求头中的Host 不一致,例如:

SNI 显示为gov.hk (可信域名)

Host 头却指向evil.com (恶意服务器)

这会导致安全设备、CDN 或 WAF 错误地认为是合法流量,从而实现绕过检测、信息隐匿等攻击行为。

因此,安全需求明确提出:

“当客户端携带的 SNI 与 HTTP Host Header 不一致时,系统需拦截请求并返回400。”

所以当我们通过多域名去区分pc端、手机端、文件、API的时候,就出现了不一致的情况。

比如两域名(www 和m)在相同IP 下、使用同一通配符或 SAN 证书,且服务端启用了HTTP/2 (h2),浏览器为了性能优化启用了Connection Coalescing(连接复用)机制。

其行为是:

浏览器仅建立 一次 TLS 连接(SNI = www.xxx.hk);

接着在这条TLS 连接上复用通道发送Host: m.xxx.hk 请求。

出于 香港政府Domain Fronting 策略要求,该行为被判断为异常访问(SNI/Host 不一致),EdgeOne 安全引擎触发 防护拦截 → 返回 HTTP 400

所以关闭EdgeOne默认的http2加速就可以了。

腾讯云EdgeOne导致的请求400错误解决办法

【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: