Получение 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 для связи с вашим сервером.