Изменение заголовков запросов, когда сервер Karate Netty используется в качестве прокси-сервера пересылки

У меня есть вариант использования, когда я использую сервер Karate Netty в качестве прокси-сервера пересылки для пересылки запросов на целевой сервер Tomcat. Я заметил, что заголовок имени хоста устанавливается на сервер Karate Netty при пересылке запроса, из-за чего запрос не дает ответа. Можем ли мы как-нибудь обновить заголовок запроса перед пересылкой запроса на целевой сервер.

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

      Feature:

  Scenario: pathMatches('/myresources/getResource') && methodIs('GET')
    # Sending request to PLATFORM ABC URL
    * karate.proceed('http://localhost:8081')
    * def response1 = response
    # Sending request to PLATFORM XYZ URL
    * karate.proceed('http://localhost:8082')
    * def response2 = response
    * match response1 == response2

2 ответа

Спасибо @Peter Thomas за всю помощь! Мне удалось решить вышеуказанную проблему, используя приведенный ниже фрагмент:

            * configure cookies = null
      * requestHeaders['cookie'] = authToken
      * requestHeaders['host'] = firstHost
      * karate.proceed(url1)
      * def response1 = response
      * configure cookies = null
      * requestHeaders['cookie'] = authToken
      * requestHeaders['host'] = secondHost
      * karate.proceed(url2)
      * def response2 = response
      * match response1 = response2

Во-первых, к вашему комментарию: получение пути, включая строку запроса, должно работать черезrequestUri: https://github.com/karatelabs/karate/tree/master/karate-netty#requesturi

Но мы поняли, что есть ошибка . Это будет исправлено в следующей версии, но если вы сможете подтвердить это с помощью developветка , которая поможет нам ускорить выпуск.

Если вы увидите коммиты в выпуске № 2295, указанные выше, вы увидите, что мы представилиrequestPathдля большего контроля над этими случаями.

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

      * requestHeaders['host'] = 'myhost:123'

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

Другие вопросы по тегам