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

如何在Karate测试中移除User-Agent请求头?

如何抑制Karate测试中自动生成的User-Agent头?

我在针对AWS WAF编写测试,需要验证请求缺失User-Agent头的场景。设置configure headers = null并手动添加必要头后,请求仍会自动生成多余的User-Agent头,即使尝试将其设为null也无法解决。

测试代码

Feature: 
Background:
    * url url
    * path path
    * configure headers = null
Scenario:
    Given header x-api-key = key
    And request payload
    When method post
    Then status 200

实际生成的请求

1 > Content-Type: application/json; charset=UTF-8
1 > Content-Length: 189
1 > Host: blah.cloudfront.net
1 > Connection: Keep-Alive
1 > User-Agent: Apache-HttpClient/4.5.14 (Java/17.0.8.1)
1 > Accept-Encoding: gzip,deflate
{blah}

解决方案

这个问题的根源是Karate底层依赖的Apache HttpClient会自动添加默认的User-Agent头,仅通过configure headers无法覆盖这个行为,需要针对HttpClient本身进行配置:

  • 方法1:设置空的User-Agent值
    在测试的Background或Scenario中添加以下配置,将User-Agent设为空字符串:

    * configure httpClient = { config: { 'http.useragent': '' } }
    
  • 方法2:完全禁用默认User-Agent生成
    如果需要彻底移除User-Agent头,而非设为空,可以配置HttpClient禁用默认的User-Agent拦截器:

    * configure httpClient = { builder: { disableDefaultUserAgent: true } }
    

配置完成后重新发送请求,即可验证缺失User-Agent头的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 21:14:52