Content-Language 是什么
Content-Language 描述响应实体的自然语言,可以列出多个值表示内容面向多种语言受众(RFC 9110 §8.5)。它与 Content-Type 里的 charset 完全是两件事:charset 说明字符编码,Content-Language 说明语言。搜索引擎与无障碍工具会读取它来判断页面语言,因此多语言站点不能随便填。
基本信息
| 名称 | Content-Language |
|---|---|
| 方向 | 响应头 |
| 规范 | RFC 9110 §8.5 |
| 取值 | BCP 47 语言标签,如 zh-CN、zh-Hans、en-US |
| 配套 | 页面 html 元素的 lang 属性、hreflang 标注 |
| 常见误区 | 与 Content-Type 的 charset 混为一谈 |
典型使用场景
- 多语言站点:让搜索引擎与读屏软件准确识别页面语言
- SEO 优化:与 hreflang、html 的 lang 属性保持一致
- 内容分发:按 Accept-Language 返回对应版本时标注真实语言
- 排障:定位服务端返回语言与实际内容不符的问题
- 质量巡检:在流水线中校验语言标注与内容语言是否一致
- 无障碍合规:辅助技术依赖语言信息选择朗读与断词规则
查看与验证
查看与验证
# 查看响应里的语言标注
curl -sI https://www.example.com/ | grep -i content-language
# content-language: zh-CN
# 按语言请求,同时观察协商结果与缓存键
curl -sI -H 'Accept-Language: en-US,en;q=0.9' https://www.example.com/ | grep -iE 'content-language|vary'语言相关的四个位置
| 位置 | 作用 | 注意事项 |
|---|---|---|
| Content-Language | 响应头标注实体语言 | 应与实际内容语言一致 |
| html 的 lang 属性 | 页面内声明语言 | SEO 与无障碍工具常用 |
| hreflang | 标注多语言对应页面 | 用于国际 SEO,需成对互指 |
| Accept-Language | 请求头声明语言偏好 | 服务端据此协商返回版本 |
只写语言不写地区时(如 zh)语义更宽;中文站点多写 zh-CN 或 zh-Hans,并注意与页面 lang 属性保持一致。
响应头与实际语言不符会被搜索引擎判为低质量页面,可在发布流水线里加一条一致性检查,成本很低但能拦住批量错误。
多语言协商响应必须带 Vary: Accept-Language,否则缓存与 CDN 会把不同语言版本互相覆盖。
区域化变体(zh-CN 与 zh-TW)差异不仅是字形,还涉及用词与日期格式;标注语言时按实际内容选择,不要为了统一而模糊化。
响应体是机器可读数据(如 JSON 接口)时,Content-Language 可以省略;它主要服务于面向人的可读内容与搜索索引。