Ich versuche, eine Cross-Origin-Anfrage mit Spring's RestTemplate zu machen. Die Kommunikation erfolgt zwischen zwei Spring-Boot-Webapps, die beide auf localhost, aber auf einem anderen Port ausgeführt werden. Was ich tue, ist:RestTemplate nicht übergeben Origin-Header
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.setOrigin("http://localhost:8083");
httpHeaders.add("Authorization", token);
HttpEntity<Void> httpEntity = new HttpEntity<>(httpHeaders);
ParameterizedTypeReference<List<MyObj>> beanType = new ParameterizedTypeReference<List<MyObj>>() {};
ResponseEntity<List<MyObj>> list = restTemplate.exchange(serviceURL, HttpMethod.GET, httpEntity, beanType);
Der Aufruf ausgeführt wird, wird die „Berechtigung“ Header übergeben ganz gut, aber egal was ich versuche, es gibt keinen „Origin“ Header auf der Empfangsseite ist. Wenn ich eine Simillar-Anfrage mit einem anderen Tool (SoapUI, RestClient Chrome-Plugin usw.) erstelle, wird die Kopfzeile genauso übergeben, wie ich sie angegeben habe.
Um alle Header auf der Empfangsseite druckt ich mit einer Implementierung von javax.servlet.Filter bin mit:
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) res;
Enumeration<String> headerNames = request.getHeaderNames();
while (headerNames.hasMoreElements()) {
String headerName = headerNames.nextElement();
log.info(headerName + ": " + request.getHeader(headerName));
}
}
Warum ist der Ursprung Header nicht besteht bei der Verwendung von RestTemplate?