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