我们可以有选择地禁用重定向(根据特定请求)加特林

Can we disable redirects selectively (On specific requests) gatling

我的 Http 协议,我在其中设置 disableFollowRedirects。但是,我正在进行一个 get 调用,我希望执行遵循重定向。我们能做到吗?我尝试了 disableProtocolChecks 但它不起作用

.baseUrl(brokerHost)
.acceptHeader("text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8") // Here are the common headers
.acceptEncodingHeader("gzip, deflate")
.acceptLanguageHeader("en-US,en;q=0.5")
.upgradeInsecureRequestsHeader("1")
.userAgentHeader("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36")
.disableFollowRedirect

对于这个请求,我想执行重定向

    .exec(http("Post SAML request to IDP")
      .post(/authentication/SSOPOST/")
      .check(status.is(302))
      .check(header("Location").saveAs("redirecturl"))
    )

不,目前(从 gatling 3.4 开始)不可能,无论是哪种方式(全局禁用和 re-enable 局部)或另一种方式(全局启用和局部禁用)。在请求级别无法控制 followRedirect 行为。

现在,你能解释一下为什么你能做到吗?

通常,人们想要禁用 followRedirect,因为他们认为他们应该在重定向响应中捕获 Location 响应 header,以便他们可以从着陆页捕获数据 url.

这是错误的。相反,他们应该启用 followRedirect 并使用 currentLocationcurrentLocationRegex 检查。

实际上,我们正在考虑删除 disableFollowRedirect 选项,除非我们确实有令人信服的理由不这样做。