Правило захвата загрузчика не нашло совпадений для переменной __RequestVerificationToken

#asp.net-core-mvc #token #stress-testing

#asp.net-core-mvc #токен #стресс-тестирование

Вопрос:

Я пытаюсь провести стресс-тестирование своего приложения с помощью Loadster, но каждый отдельный метод Post выдает предупреждение / ошибку __RequestVerificationToken пусто или не определено, поскольку в методе Get у него есть предупреждение о том, что правило захвата не найдено совпадений для переменной __RequestVerificationToken.

Это способ захвата по умолчанию в методе Get

введите описание изображения здесь

Я также попробовал эти два способа захвата, чтобы захватить

 <input name="__RequestVerificationToken" type="hidden" value="
  

и

 <input name="__RequestVerificationToken" value="
  

как вы можете видеть здесь

введите описание изображения здесь

но все еще с теми же предупреждениями.

кстати, у меня есть этот ключ в HTML-файле.

введите описание изображения здесь Есть какие-либо подсказки?

Ответ №1:

После записи скрипта Loadster автоматически добавляет правила захвата для некоторых сгенерированных сервером токенов, в том числе __RequestVerificationToken , когда он видит, что они передаются от клиента к серверу в последующем запросе. Оно делает это путем обратного отслеживания графика записанных запросов / ответов, пока не найдет, откуда они возникли.

Когда регистратор Loadster находит совпадение для одного из этих токенов, он создает средство захвата на исходном шаге (где значение было впервые замечено в ответе) и параметризованную переменную на последующих шагах, где значение возвращается на сервер.

Важно иметь в виду, что правило захвата основано исключительно на информации, доступной во время записи. Если при воспроизведении что-то отличается, программа захвата может не найти значение, и вы получите эту ошибку.

Наиболее вероятным объяснением является то, что на более раннем шаге вашего скрипта не удалось создать ожидаемое состояние, и теперь сервер фактически не возвращает страницу с __RequestVerificationToken . Например, более ранний вход в систему в вашем скрипте мог завершиться неудачно, и теперь, когда вы запрашиваете форму, вы получаете какую-то страницу с ошибкой вместо ожидаемой формы.

Вы можете подтвердить это в Loadster, используя вкладку запросов внизу редактора сценариев. После воспроизведения скрипта в этом разделе появляется дерево всех запросов и ответов, и вы можете перейти к детализации, чтобы увидеть точный ответ, возвращенный вашим сервером. Скорее всего, вы не увидите a __RequestVerificationToken в этом ответе (вот почему не удалось захватить), но вы, вероятно, увидите что-то еще, что объясняет это. Вам также может потребоваться вернуться в дереве к более раннему запросу / ответу, чтобы увидеть, где он сошел с рельсов.

Ответ №2:

Для меня место, в котором Loadster прикрепил «Захват» из записи, было неправильным. После записи оно прикрепило правило «Захвата» к запросу POST, который был получен в результате отправки формы. Токен, который должен быть захвачен, был фактически сгенерирован предыдущим запросом GET.

Чтобы исправить это, я просто переместил (перепечатал) Capture csrfmiddlewaretoken from HTML input csrfmiddlewaretoken из запроса POST в предыдущий GET, и это сработало.


На самом деле это не относится к OP, но результаты поиска для этой ошибки невелики, поэтому это показалось подходящим местом для этого.