Commit ebcb7a9
committed
fix: 弹窗"响应头"数字反映真实总数(之前 pickHeaders 命中数为 0 时显示 0)
上一版只修了 popup 端读 state.result.headerCount,但 background 端 buildPopupResult 的 headerCount 算法本身有问题:
const headers = data.main?.headers || {}
return { ..., headerCount: Object.keys(headers).length }
而 data.main.headers 来自 buildHeaderRecord 里的 pickHeaders(normalizedHeaders, headerRules.interestingHeaders) —— 这个 pickHeaders 是按 interestingHeaders 白名单(server / x-powered-by / cf-ray / x-cache 等几十条)过滤的结果,目的是为业务挑选「有识别价值的响应头」。**响应头总数 ≠ picked 数量**:如果某站点没命中白名单里任何 header(比如自定义 header 都裁掉了 / 或是只走 HTTP/3 默认 header),picked 是空 {},弹窗就一直显示 0,与"主文档真的收到了 N 个响应头"的语义脱节。
buildHeaderRecord 在 record 里多存一个 headerCount: Object.keys(normalizedHeaders).length,这是响应头**总数**(normalize 后即 lowercased + 合并同名)。pickHeaders 仍然只挑白名单存进 record.headers 走业务,但 record.headerCount 反映完整数量。
buildPopupResult 改为:先看 main.headerCount 是不是有效数字,是就用它;否则回退到 Object.keys(main.headers || {}).length 兼容旧缓存。
插件版本升级到 1.1.1。1 parent 9cbc1e5 commit ebcb7a9
3 files changed
Lines changed: 6 additions & 3 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | 3 | | |
4 | | - | |
| 4 | + | |
5 | 5 | | |
6 | 6 | | |
7 | 7 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
122 | 122 | | |
123 | 123 | | |
124 | 124 | | |
| 125 | + | |
125 | 126 | | |
126 | 127 | | |
127 | 128 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
191 | 191 | | |
192 | 192 | | |
193 | 193 | | |
194 | | - | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
195 | 197 | | |
196 | 198 | | |
197 | 199 | | |
| |||
201 | 203 | | |
202 | 204 | | |
203 | 205 | | |
204 | | - | |
| 206 | + | |
205 | 207 | | |
206 | 208 | | |
207 | 209 | | |
| |||
0 commit comments