如何在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
相关产品推荐
相关产品推荐

