You need to enable JavaScript to run this app. 为何Tomcat+Atmosphere环境下部分HTTP/HTTPS响应随机以1|X开头?
优惠活动
大模型
产品
解决方案
定价
更多

为何Tomcat+Atmosphere环境下部分HTTP/HTTPS响应随机以1|X开头?

过去一个月收到大量用户反馈,在使用这款Web应用时遇到异常问题。排查所有反馈后发现,所有故障的共同特征是:某条随机请求收到的响应,都以1|X开头。

之前曾遇到过客户因为Tomcat反向代理配置不正确出现同类问题,一开始就建议对方核查全量配置,对方反馈所有配置均正确。当时仍怀疑对方核查有遗漏,又建议检查防火墙。直到4月26日(上周五),在本地工作环境复现了完全相同的问题——本地所有配置完全确认无误,localhost环境下也不存在防火墙规则。

这个问题最反常的地方是,故障响应只会随机追加这三个固定字符,自始至终都是这三个字符。截至目前观测,只有*.js与.html*类型的资源响应会出现这类故障。

对失败的请求重复发起请求、或是刷新页面,就能拿到正常响应。不过刷新页面的操作可能触发另一次随机的请求故障。

下面是加载angular.js时出现该错误的示例:
加载angular.js时的错误示例

目前还不清楚问题的根本诱因,也不确定哪些信息对排查有帮助,先列几个已知的环境参数:

  • Tomcat 7.x(实际部署版本多为7.0.59或7.0.82)
  • Java JDK 8u202
  • Atmosphere 2.6.1

如果需要更具体的排查信息,可以随时说明。

补充排查结论:1|X是Atmosphere的HeartbeatInterceptor生成的消息,由paddingBytes字段的默认初始化逻辑产生。

Atmosphere的消息响应遵循固定结构:

  • 消息长度
  • 分隔符(竖线)
  • 实际消息内容

按照这个结构逻辑,Atmosphere有时会生成以字符X为内容的心跳消息,示例如下:
Atmosphere心跳消息示例

现在的核心待解问题是:为什么这些心跳消息,有时会和其他正常的静态资源响应内容发生合并。

内容的提问来源于stack exchange,提问作者P. Vucinic

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.24 00:06:11