You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置MockServer实现请求头完全精确匹配 无额外或缺失请求头

解决方案

MockServer 没有内置的请求头严格匹配配置项,你可以通过添加自定义请求匹配器实现「请求头集合完全一致才命中」的逻辑,修改后代码如下:

mockServer
    .`when`(
        request()
            .withPath("/somePath")
            // 先校验指定头存在且值匹配
            .withHeaders(
                Headers(
                    header("header1", "value1"),
                    header("header2", "value2")
                ).withKeyMatchStyle(KeyMatchStyle.MATCHING_KEY)
            )
            // 新增自定义匹配逻辑,校验无额外请求头
            .withRequestMatcher { request: HttpRequest ->
                // 此处填写所有允许的请求头名称,统一转小写避免大小写匹配问题
                val allowedHeaders = setOf("header1", "header2").map { it.lowercase() }.toSet()
                val actualHeaders = request.headerNames.map { it.lowercase() }.toSet()
                actualHeaders == allowedHeaders
            }
    )
    .respond(
        response()
            .withContentType(MediaType.APPLICATION_JSON_UTF_8)
            .withBody("OK")
    )

注意事项

  • 如果你需要忽略HTTP客户端自动携带的标准头(比如Host、Accept、Connection等),可以把这些头名称加入allowedHeaders集合,或者在actualHeaders中过滤掉这些头再做比对。
  • 该方法需要MockServer版本 >= 5.11.0,低版本可以替换为脚本匹配逻辑实现同样效果。

内容的提问来源于stack exchange,提问作者Ultranium

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 13:06:11