И у нас есть несколько Java-приложений, развернутых на нескольких Linux-серверах, которые вызывают этот API.
Каждый раз, когда к этой конечной точке делается запрос, я хочу, чтобы информация об имени хоста проверялась.< /p>
- API — http://localhost:8000/test
- Второе приложение весенней загрузки, работающее на локальном порту 9000
когда это приложение отправляет запрос на http://localhost:8000/test — я смогу узнать, какой хост сделал запрос. здесь - localhost:9000
Я получаю только следующие заголовки от этого
хоста, соединение, пользовательский агент, принять, тип контента, длина контента.
Origin , Referer — заголовки отсутствуют.
Код контроллера ниже
@PostMapping("/test")
public String authenticateAndGetToken (HttpServletRequest httpServletRequest, @RequestBody Request request) {
String errorMsg = "Invalid UserName";
Log.info("origin"+httpServletRequest.getHeader(HttpHeaders.ORIGIN));
httpServletRequest.getHeaderNames().asIterator().forEachRemaining (xx->System.out.println(xx));
Log.info(httpServletRequest.getRemoteAddr());
UserDetails userDetails = userInfoService. LoadUserBy Username (request.getUsername
Здесь источник имеет значение null
Getremoteaddr — это адрес сервера, а не клиента
RestTemplate restTemplate1 = new RestTemplate(); HttpHeaders headers = new HttpHeaders();
headers.setContentType (MediaType.APPLICATION_JSON);
Map map = new HashMap();
map.put("username", "test");
map.put("password", "test");
String jsonBody new ObjectMapper().writeValueAsString(map);
HttpEntity entity = new HttpEntity(jsonBody, headers);
ResponseEntity response = restTemplate1.exchange(url: "http://localhost:8000/test", HttpMethod.POST, entity, String.class);
Подробнее здесь: https://stackoverflow.com/questions/790 ... controller
Мобильная версия