我是jMeter测试的新手.我想在UI上测试字段更新.因此,当我运行测试时,我收到了CSRF验证错误.我该如何解决这个问题.我的测试计划看起来像,
取样器结果如下,
Thread Name: Thread Group 1-1 Sample Start: 2014-11-18 23:37:49 IST Load time: 688 Latency: 688 Size in bytes: 483 Headers size in bytes: 457 Body size in bytes: 26 Sample Count: 1 Error Count: 1 Response code: 401 Response message: Unauthorized : CSRF validation failed Response headers: HTTP/1.1 401 Unauthorized : CSRF validation failed Date: Tue, 18 Nov 2014 18:08:07 GMT Server: Apache/2.4.7 (Ubuntu) X-Powered-By: PHP/5.5.9-1ubuntu4.5 Expires: Sun, 19 Nov 1978 05:00:00 GMT Last-Modified: Tue, 18 Nov 2014 18:08:07 +0000 Cache-Control: no-cache, must-revalidate, post-check=0, pre-check=0 ETag: "1416334087" Vary: Accept Content-Length: 26 Keep-Alive: timeout=5, max=100 Connection: Keep-Alive Content-Type: application/json
为什么我们会收到CSRF验证错误以及如何解决它.
CSRF代表跨站点请求伪造,并且由于缺少必需的动态请求参数(通常是Cookie或标头)而导致CSRF验证错误.
我建议在启用了HttpFox或FireBug扩展的Firefox浏览器中执行您的场景,并检查请求详细信息.CSRF令牌通常作为服务器响应中的cookie出现,需要作为头或请求参数传递.所以它类似于通常的相关性.因此流程应如下所示:
第一个HTTP请求:打开第一页
通过以下后处理器之一从响应中提取CSRF令牌
正则表达式提取器
XPath Extractor
CSS/JQuery Extractor
第二个HTTP请求:打开第二页(CSRF保护).将在步骤2中提取的令牌添加到以下之一:
HTTP请求参数
HTTP标头管理器
HTTP Cookie管理器
取决于服务器期望令牌生存的位置.
将来,查看"localhost"服务器名称 - 不要在应用程序所在的同一台机器上运行JMeter性能测试.