KARATE:lowerCaseResponseHeaders也以小写形式设置为true并将参数的值放在redirect_uri中

时间:2019-09-19 15:06:38

标签: karate

我想在其中一种测试环境中使用karate.configure('lowerCaseResponseHeaders', true)。但是问题在于,它将状态的值以小写形式放置在redirect_uri中,该值在POST请求的responseHeaders.location中返回。示例:

位置的返回值:

location: https://www.example.com/bar?state=ReturnedValueForState

使用karate.configure('lowerCaseResponseHeaders', true)

将值设置为小写
location: https://www.example.com/bar?state=returnedvalueforstate

我必须使用原始的返回值,否则当我使用redirect_uri时会得到404 Not Found。 空手道中是否有解决方案,可以跳过responseHeaders中项目的值,而仅将项目名称小写?

2 个答案:

答案 0 :(得分:1)

不。因此,请手动进行。在进行验证之前,请使用karate.lowerCase()

答案 1 :(得分:0)

我找到了解决此问题的方法,但不适用于其他responseHeader。这是我的解决方案:在karate-config.js中,我放了

  • location: 'location'作为环境变量,用于返回小写位置的

  • location: 'Location'用于返回大写位置的环境。然后在功能中,我可以获得位置的值:`

     * def location = responseHeaders[location][0]`
     * def foo = location.substring(location.lastIndexOf('/') + 2)
    

    它不适用于诸如PSU-User-Agent之类的标头。响应为Could not parse token starting at position 1. Expected ?, ', 0-9, *

我在这里阅读了有关此问题的信息,但未发现任何问题:https://github.com/intuit/karate/issues/504

我们使用最新的空手道版本:0.9.4。

为什么在空手道回应中标题检查保持区分大小写?而在http协议中,它应不区分大小写。    感谢您的答复