配置项作用 #
http.content_type.required 配置项强制要求 HTTP 请求必须包含有效的 Content-Type 头。
是否可选 #
否(此配置已弃用,始终为 true)
默认值 #
true (强制要求 Content-Type)
配置项类型 #
已弃用 - 此配置项仅为滚动升级兼容性保留,实际值始终为 true
配置格式 #
# 此配置已弃用,无法设置为 false
# 如果尝试设置为 false 会抛出异常
http.content_type.required: true
工作原理 #
┌─────────────────────────────────────────────────────────┐
│ HTTP 请求验证 │
└─────────────────────────────────────────────────────────┘
客户端请求
│
▼
检查 Content-Type 头
│
├── 存在且有效 → 继续处理
│
└── 缺失或无效 → 拒绝请求
返回 400 错误
重要说明 #
此配置项已弃用,存在原因仅为滚动升级兼容性:
- 无法禁用 - 设置为 false 会抛出异常
- 始终强制 - 所有请求必须包含 Content-Type
- 硬编码 - 实际值始终为 true
请求验证 #
Easysearch 要求所有有内容的请求必须包含 Content-Type 头:
有效的 Content-Type:
# JSON 请求
curl -X POST "http://localhost:9200/_search" \
-H "Content-Type: application/json" \
-d '{"query": {"match_all": {}}}'
# Bulk API
curl -X POST "http://localhost:9200/_bulk" \
-H "Content-Type: application/x-ndjson" \
--data-binary @data.json
错误示例 #
缺少 Content-Type:
curl -X POST "http://localhost:9200/_search" \
-d '{"query": {"match_all": {}}}'
错误响应:
{
"error": "Content-Type header [application/json] is missing",
"status": 406
}
配置验证 #
# 查看当前配置(始终为 true)
GET /_nodes/settings?filter_path=nodes.*.http.content_type.required
注意事项 #
- 已弃用 - 此配置项仅为兼容性保留
- 无法禁用 - 设置为 false 会抛出 IllegalArgumentException
- 强制验证 - 所有请求必须包含 Content-Type
- 滚动升级 - 用于旧版本升级时的兼容性
正确的 Content-Type #
| 操作 | Content-Type |
|---|---|
| 搜索/查询 | application/json |
| Bulk API | application/x-ndjson |
| 索引文档 | application/json |
| 更新文档 | application/json |
完整配置示例 #
# easysearch.yml
# 此配置已弃用,无需显式设置
# 系统会自动强制要求 Content-Type
# 正确的请求示例
# curl -H "Content-Type: application/json" ...





