我有一个带有一个 rest api 的 spring boot 应用程序。将把它部署在一个 linux 服务器中。我们在多个 linux 服务器中部署了多个 java 应用程序来调用该 api。每当向该端点发出请求时,我都希望验证主机名信息。
- API——http://localhost:8000/test
- 第二个 spring boot 应用程序在本地 9000 端口运行,当此应用程序向 http://localhost:8000/test 发出请求时 - 我应该能够知道哪个主机发出了请求。这里 - localhost:9000
我尝试使用 HttpServletRequest。我从该主机、连接、用户代理、接受、内容类型、内容长度仅获取以下标头。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
此处 origin 为 null Getremoteaddr 是服务器地址而不是客户端地址
RestTemplate restTemplate1 = new RestTemplate(); HttpHeaders headers = new HttpHeaders();
headers.setContentType (MediaType.APPLICATION_JSON);
Map<String, String> map = new HashMap<>();
map.put("username", "test");
map.put("password", "test");
String jsonBody new ObjectMapper().writeValueAsString(map);
HttpEntity<String> entity = new HttpEntity<>(jsonBody, headers);
ResponseEntity<String> response = restTemplate1.exchange(url: "http://localhost:8000/test", HttpMethod.POST, entity, String.class);
1 个回答