Openshift redirecionar o serviço https perde o endereço IP de usuários
-
21-12-2019 - |
Pergunta
Oi Iam redirecionar todo o tráfego para https, como sugerido na Base de dados de Conhecimento: https://openshift.redhat.com/community/kb/kb-e1044-how-to-redirect-traffic-to-https
No entanto, depois de fazer isso Iam, não é possível obter o endereço ip de usuários e, em vez de obter o endereço ip do Servidor que está redirecionando:
Abaixo está um exemplo de um Java spring MVC específicas de implementação.O currentViewedIP torna-é a servidores que fez a redirecionado para HTTPS, em vez de o IP de usuários.
@RequestMapping(value = "/payment/", method = RequestMethod.GET)
public String newBracqet(Model model, HttpServletRequest request) {
String currentViewedIP = request.getRemoteAddr();
}
Solução
Se o usuário está por trás de um servidor proxy de acesso ou o seu servidor web através de um balanceador de carga (por exemplo, no de hospedagem em nuvem), o código acima irá obter o endereço IP do servidor proxy ou balanceador de carga de servidor, e não o endereço IP original de um cliente.
Para resolver isso, você deve obter o endereço IP do pedido de cabeçalho HTTP "X-Forwarded-For (XFF)".
//is client behind something?
String ipAddress = request.getHeader("X-FORWARDED-FOR");
if (ipAddress == null) {
ipAddress = request.getRemoteAddr();
}