Получение http в заголовке Location, когда исходный запрос был сделан через https

Мои вопросы:

1) Почему я получаю http в качестве схемы в заголовке Location, когда исходный запрос от браузера был сделан с https?

2) Это проблема с балансировщиком нагрузки в виде мух?

Заголовок моего запроса:

method: POST
scheme: https
accept-encoding: gzip, deflate, br
accept-language: en-US,en;q=0.9
content-length: 39
content-type: application/x-www-form-urlencoded
origin: https://10.43.201.207
referer: https://10.43.201.207/myapp/login.html

Мой заголовок ответа:

content-length: 0
date: Thu, 03 Jan 2019 04:55:42 GMT
location: http://10.43.201.207/myapp/dashboard.html?init=1
server: WildFly/12
set-cookie: APP_AUTH=leTPWYd1222zsrrtRRtgpuEWEWc7pR0CBuNPYPT5QHbGn_Db7ICK; path=/; secure; HttpOnly
set-cookie: JSESSIONID="leTee33333PWYdSDSDweetRRtgpuc7pR0CBuNPYPT5QHbGn_Db7ICK.master-0:master-server"; Version=1; Path=/myapp; Secure; HttpOnly
status: 302
x-content-type-options: nosniff
x-frame-options: SAMEORIGIN
x-powered-by: Undertow/1
x-xss-protection: 1; mode=block

0 ответов

Ниже приведено подробное объяснение решения вышеуказанной проблемы:

У нас есть балансировщик нагрузки, сидящий перед двумя серверами wildfly. Балансировщик нагрузки обрабатывает рукопожатие SSL и форсирует весь трафик https узлы wildfly не имеют сертификатов, а трафик между балансировщиком нагрузки и серверами не зашифрован, узлы wildfly ничего не знают о SSL. Связь между узлами балансировки нагрузки и узлами wildfly осуществляется через http протокол.

Когда пользователь заходит на защищенную страницу, например, https://someip/app

Поток запросов, как показано ниже:

  • Браузер клиента для балансировки нагрузки через https
  • Балансировщик нагрузки для узлов wildlfy через http протокол
  • добавленной proxy-address-forwarding="true" в узле wildlfy сервера http слушатель

Балансировщик нагрузки отключает TLS и передает запрос приложению как HTTP? Если это так, то приложение при выполнении перенаправления, вероятно, использует тот же протокол, по которому был получен запрос.

Если это так, либо заставить приложение заставить httpsили получите балансировщик нагрузки, чтобы переписать ответы, возвращающиеся через.

Вам может понадобиться установить proxy-address-forwarding="true" и / или request_header_add X-Forwarded-Proto https,

Другой вариант - добавить балансировщик нагрузки к ответу сервера, например:

Strict-Transport-Security max-age=300;

Это эффективно скажет клиенту, что он всегда должен использовать https для связи с вашим сервером.

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