Команда Jmeter getHeaderManager (), добавляющая слишком много заголовков к запросу - PullRequest
1 голос
/ 05 марта 2020

У меня есть тест Jmeter, который принимает заголовок авторизационного токена и добавляется в запрос http с помощью следующей команды

sampler.getHeaderManager().add(new Header("Authorization","Bearer " + vars.get("BEARER")));

Он работает нормально для первых нескольких запросов, а затем завершается с ошибкой ниже 100 *

HTTP Error 400. The size of the request headers is too long

Когда я проверял заголовок, на самом деле было добавлено около 100+ заголовков для Auth Token [: O]. Пожалуйста, смотрите детали ниже. Может ли кто-нибудь помочь мне в этом.

enter image description here

+

Ответы [ 2 ]

0 голосов
/ 09 марта 2020

Скорее всего, ваш препроцессор JSR223 расположен в неверном месте.

JSR223 PreProcessor подчиняется Правилам JMeter Scoping , поэтому, если вы установите его на одном уровне с несколькими семплерами , он будет выполнен перед каждым сэмплером в своей области действия .

Таким образом, вам нужно сделать препроцессор JSR223 дочерним по отношению к сэмплеру, заголовок которого вы хотите изменить, и это должно решить вашу проблему.

Кстати, вам не нужны никакие скрипты, заголовки можно добавить с помощью HTTP Header Manager .

0 голосов
/ 05 марта 2020

Я подозреваю, что вы звоните HeaderManager#add снова и снова. Метод add добавляет заголовок. Хотя то, что вы действительно хотите сделать, это заменить заголовок. К сожалению, на HeaderManager нет способа сделать это.

Но вы можете подражать этому. Сначала удалите все заголовки с именем Authorization из диспетчера заголовков, а затем повторно добавьте заголовок с новым значением. Код в Groovy будет выглядеть так:

import org.apache.jmeter.protocol.http.control.Header
sampler.headerManager.removeHeaderNamed('Authorization')
sampler.headerManager.add(new Header('Authorization', 'Bearer ' + vars.get('BEARER')))
...