jmeter中的相关问题:所需的防伪形式字段“__RequestVerificationToken”不存在

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jmeter中的相关问题:所需的防伪形式字段“__RequestVerificationToken”不存在相关的知识,希望对你有一定的参考价值。

我试图用jmeter生成性能测试脚本。

这里的一个页面需要__RequestVerificationToken作为一个字段,需要从上一页生成。我们使用正则表达式提取器来捕获令牌并在后续请求中传递相同的令牌。在视图结果树中,我可以看到适当的请求验证令牌但我们收到错误

所需的防伪表单字段“__RequestVerificationToken”不存在。

这是我们使用的正则表达式提取器。 enter image description here

在结果树中,请求使用令牌enter image description here发送

这是通过cookie传递的请求ID。这与以前的要求不同。这个系统genearted.enter image description here

请帮助我们,我们坚持了这两周

在我们的应用程序中抛出以下错误,

System.Web.Mvc.HttpAntiForgeryException (0x80004005): The required anti-forgery form field "__RequestVerificationToken" is not present.
     at abc.def.Web.Filters.ApplicationHandleErrorAttribute.OnException(ExceptionContext filterContext)
     at System.Web.Mvc.ControllerActionInvoker.InvokeExceptionFilters(ControllerContext controllerContext, IList`1 filters, Exception exception)
     at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass21.<BeginInvokeAction>b__19(AsyncCallback asyncCallback, Object asyncState)
     at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResultBase`1.Begin(AsyncCallback callback, Object state, Int32 timeout)
     at System.Web.Mvc.Async.AsyncControllerActionInvoker.BeginInvokeAction(ControllerContext controllerContext, String actionName, AsyncCallback callback, Object state)     at System.Web.Mvc.Controller.<BeginExecuteCore>b__1c(AsyncCallback asyncCallback, Object asyncState, ExecuteCoreState innerState)
     at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid`1.CallBeginDelegate(AsyncCallback callback, Object callbackState)
     at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResultBase`1.Begin(AsyncCallback callback, Object state, Int32 timeout)
     at System.Web.Mvc.Controller.BeginExecuteCore(AsyncCallback callback, Object state)     at abc.def.Web.Base.BaseController.BeginExecuteCore(AsyncCallback callback, Object state)
     at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResultBase`1.Begin(AsyncCallback callback, Object state, Int32 timeout)
     at System.Web.Mvc.Controller.BeginExecute(RequestContext requestContext, AsyncCallback callback, Object state)
     at System.Web.Mvc.MvcHandler.<BeginProcessRequest>b__4(AsyncCallback asyncCallback, Object asyncState, ProcessRequestState innerState)
     at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid`1.CallBeginDelegate(AsyncCallback callback, Object callbackState)
     at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResultBase`1.Begin(AsyncCallback callback, Object state, Int32 timeout)
     at System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContextBase httpContext, AsyncCallback callback, Object state)
     at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
     at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) 
答案

看一下图片,似乎某处某处您的提取失败,或者您使用的是硬编码值而不是提取的值。我建议使用Debug SamplerView Results Tree监听器组合双重检查提取的值,并确保在HTTP请求中使用${RequestVerificationToken}


此外,如果变量来自HTTP Cookie,你可以直接从HTTP Cookie Manager得到它,如:

  1. 将下一行添加到user.properties文件(位于JMeter安装的“bin”文件夹中) CookieManager.save.cookies=true
  2. 重新启动JMeter以获取更改
  3. 如果需要,请将cookie值作为${COOKIE____RequestVerificationToken}

更多信息:HTTP Cookie Manager Advanced Usage - A Guide

以上是关于jmeter中的相关问题:所需的防伪形式字段“__RequestVerificationToken”不存在的主要内容,如果未能解决你的问题,请参考以下文章

所需的防伪表单字段“__RequestVerificationToken”不存在 用户注册错误

所需的防伪表单字段 __requestverificationtoken 不存在 ajax 调用时出错

ajax 调用中不存在所需的防伪表单字段“__RequestVerificationToken”

从 ajax 方法调用操作引发错误:所需的防伪表单字段“__RequestVerificationToken”不存在

所需的防伪 cookie“__RequestVerificationToken”不存在

iframe、跨域 cookie、p3p 策略和 safari 错误:未提供所需的防伪令牌或无效