📣 极限科技诚招搜索运维工程师(Elasticsearch/Easysearch)- 全职/北京 👉 : 立即申请加入

配置项作用 #

http.content_type.required 配置项强制要求 HTTP 请求必须包含有效的 Content-Type 头。

是否可选 #

否(此配置已弃用,始终为 true)

默认值 #

true (强制要求 Content-Type)

配置项类型 #

已弃用 - 此配置项仅为滚动升级兼容性保留,实际值始终为 true

配置格式 #

# 此配置已弃用,无法设置为 false
# 如果尝试设置为 false 会抛出异常
http.content_type.required: true

工作原理 #

┌─────────────────────────────────────────────────────────┐
│                   HTTP 请求验证                           │
└─────────────────────────────────────────────────────────┘

客户端请求
    │
    ▼
检查 Content-Type 头
    │
    ├── 存在且有效 → 继续处理
    │
    └── 缺失或无效 → 拒绝请求
                       返回 400 错误

重要说明 #

此配置项已弃用,存在原因仅为滚动升级兼容性:

  1. 无法禁用 - 设置为 false 会抛出异常
  2. 始终强制 - 所有请求必须包含 Content-Type
  3. 硬编码 - 实际值始终为 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

注意事项 #

  1. 已弃用 - 此配置项仅为兼容性保留
  2. 无法禁用 - 设置为 false 会抛出 IllegalArgumentException
  3. 强制验证 - 所有请求必须包含 Content-Type
  4. 滚动升级 - 用于旧版本升级时的兼容性

正确的 Content-Type #

操作Content-Type
搜索/查询application/json
Bulk APIapplication/x-ndjson
索引文档application/json
更新文档application/json

完整配置示例 #

# easysearch.yml

# 此配置已弃用,无需显式设置
# 系统会自动强制要求 Content-Type

# 正确的请求示例
# curl -H "Content-Type: application/json" ...