JMeter:cookie参数化/提取AJAX生成的令牌的问题

时间:2016-10-17 17:49:38

标签: regex apache cookies jmeter csrf

这是关于同一问题的两个问题,所以让我先介绍一下这个问题。我在“方法”部分提出的问题。

问题的背景:我正在使用Apache Jmeter来加载测试Web应用程序,我使用Jmeter的HTTP Test Script Recorder创建了测试脚本。在登录到应用程序期间,通过看起来像AJAX脚本的内容生成CSRF令牌。看起来CSRF令牌需要在测试后期发生的HTTP请求中作为cookie传递。

我无法通过以下方法捕获CSRF令牌:

方法#1:正则表达式提取器

我已经配置了我的正则表达式提取器来从生成令牌的HTTP响应中获取令牌。我已经通过抓住在同一HTTP请求步骤中生成的其他cookie来验证这一点,并且我能够成功获取它们。但是,出于某种原因,我无法以相同的方式获取CSRF令牌。如前所述,正在测试的应用程序似乎是通过AJAX脚本生成CSRF令牌。出于某种原因,我认为Jmeter无法捕获令牌。有谁知道为什么会这样?

方法#2:使用Cookie管理器参数化Cookie

由于使用正则表达式似乎不起作用,我正在使用official documentation来参与cookie管理器的参数化。所以,我已将$ {COOKIE_X-CSRF-TOKEN}添加到各个HTTP请求中传递的每个“X-CSRF-TOKEN”标头的“Value”字段中,由于某种原因,它无法捕获令牌。我已经将“CookieManager.save.cookies = true”添加到jmeter.properties文件中。我还需要使用cookie管理器配置cookie的参数化吗?

以下是我在生成令牌的相应HTTP请求的响应中看到的一组示例Cookie:

JSESSIONID: B3E98A6BB702BCDD460B99U97B1E6507
newuser:
nbbu_sid: 2F951797h299631_0000SID
X-CSRF-TOKEN: qliTGwGcAVhvYk8+VfyK3n3PmgpXS8f1Va8FSD8SuZE=

如前所述,我能够从此HTTP响应消息中捕获所有其他cookie值,但不能捕获X-CSRF令牌值。 (我认为这与生成令牌的AJAX脚本有关,但我不确定。)

如果没有,则问题可能与方法#1相同,其中生成令牌的方式是问题。 :(

对此有任何想法或指导将非常感谢。我已经看到一些其他问题有些相关,但我觉得这些问题的答案无法解决我的问题。

0 个答案:

没有答案