Тест каратэ следует за фиктивным URL-адресом 303 при отсутствии заголовка `Expires: 0` - PullRequest
1 голос
/ 16 марта 2020

У меня есть тест по каратэ, который отправляет POST, а затем отправляет обратно перенаправление на фиктивный адрес. С недавним обновлением Spring я теперь вижу перенаправление, возвращающееся как 303, а не 302.

. Я не хочу, чтобы этот 302 URL сопровождался запросом. Тест только подтвердил, что мы получили 302 назад, и продолжил проверку. Это то, что я видел до весеннего обновления. Однако с возвращенным 303 за ним следует запрос GET к фиктивному URL, который затем завершается ошибкой с UnknownHostException. Я думаю, возможно, из-за присутствия Expires: 0 в заголовках 302. 303 не содержит этот заголовок (или Pragma: no-cache, но я не вижу, как это повлияет на него). Ниже приведены заголовки ответов для каждого с различиями, выделенными *

302

  5 < 302
* 5 < Cache-Control: no-cache, no-store, max-age=0, must-revalidate
  5 < Connection: keep-alive
  5 < Content-Language: en-US
  5 < Content-Length: 0
  5 < Date: Mon, 16 Mar 2020 12:04:55 GMT
* 5 < Expires: 0
  5 < Location: http://anywhere?key=value&code=iXAnzC
* 5 < Pragma: no-cache
  5 < Server: nginx/1.17.9
  5 < X-Content-Type-Options: nosniff
  5 < X-Frame-Options: DENY
  5 < X-XSS-Protection: 1; mode=block

303

5 < 303
5 < Cache-Control: no-store
5 < Connection: keep-alive
5 < Content-Language: en-US
5 < Content-Length: 0
5 < Date: Fri, 13 Mar 2020 11:06:31 GMT
5 < Location: http://anywhere?key=value&code=05O7lL
5 < Server: nginx/1.17.9
5 < X-Content-Type-Options: nosniff
5 < X-Frame-Options: DENY
5 < X-XSS-Protection: 1; mode=block

Мы явно не устанавливаем эти заголовки, поэтому это будет поведение Tomcat / NGinx, что означает, что оно будет стандартным на многих серверах. Это обычно ожидаемое поведение с 303 или это связано с различиями в заголовках?

1 Ответ

1 голос
/ 16 марта 2020

Можете ли вы взглянуть на параметр configure followRedirects: https://github.com/intuit/karate#configure - но я думаю, вы уже знаете это и, возможно, это работает только в течение 302 с.

Если вы уже установите его на false и по-прежнему наблюдайте, как каратэ делает второй звонок автоматически, возможно, это нужно исправить. Любые указатели на то, какие изменения нам нужно внести в код karate-apache, помогут, вот реализация для followRedirects.

Вы также можете попробовать переключиться на karate-jersey и посмотреть если этот клиент работает так, как вы ожидаете.

...