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

Karate调用POST接口时出现CircularRedirectException异常求助

Karate POST请求循环重定向问题排查与解决

错误本质

你遇到的CircularRedirectException是因为POST请求触发了循环重定向:请求的HTTPS端点被重定向到同路径的HTTP地址(还多了末尾斜杠),且这个重定向过程反复触发。PUT方法正常,说明服务端对POST请求的路由/重定向规则与PUT不一致。

排查与解决步骤

1. 先验证服务端重定向行为

用curl直接测试POST请求,观察重定向细节:

curl -v -X POST https://l3vpn-api-x-dev-achraf.afn-prv.opc-blue.tb.rns.equant.com/l3vpn/ppp-access/dry-run \
  -d @toto-payload.json \
  -H "Content-Type: application/json"

重点看响应头的Location字段,确认重定向目标是否合理,是否存在HTTPS转HTTP、路径末尾强制加斜杠等规则。

2. 调整Karate的重定向配置

Karate默认自动跟随重定向,但遇到循环会报错。可以先关闭自动重定向,获取原始重定向响应排查:

Feature: Happy path

Background:
  Given url bvpn.url
  * def body = read("classpath:bvpn/data/toto-payload.json")
  # 关闭自动跟随重定向,先查看重定向响应
  Given configure followRedirects = false

Scenario: Test dry run post BVPN
  Given path bvpn.path.post.dryRun
  And request body
  And headers headersJson
  When method post
  # 重定向通常返回301/302状态码
  Then status 302
  And print response.headers.Location

如果确认服务端重定向逻辑是预期的(比如必须加斜杠),可以尝试允许循环重定向(不推荐,仅临时测试):

Given configure allowCircularRedirects = true

3. 修正请求路径

报错里的重定向目标路径末尾多了斜杠,尝试直接使用带斜杠的路径发起请求:

Scenario: Test dry run post BVPN
  # 给路径加上末尾斜杠
  Given path bvpn.path.post.dryRun + '/'
  And request body
  And headers headersJson
  When method post
  Then status 200
  And print response

4. 排查HTTPS转HTTP的问题

重定向从HTTPS变成HTTP,可能是服务端反向代理或路由配置问题。如果测试环境允许,尝试直接用HTTP发起POST请求:
修改bvpn.url为http://l3vpn-api-x-dev-achraf.afn-prv.opc-blue.tb.rns.equant.com后重新运行测试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 16:42:41