Tôi đang cố thực hiện yêu cầu có nguồn gốc chéo bằng cách sử dụng RestTemplate của Spring. Giao tiếp được thực hiện giữa hai ứng dụng web khởi động Spring, cả hai đều chạy trên localhost nhưng khác cổng. Những gì tôi làm là:RestTemplate không vượt qua Tiêu đề gốc
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);
Cuộc gọi được thực hiện, tiêu đề "Ủy quyền" được chuyển tốt, nhưng không có vấn đề gì tôi cố gắng, không có tiêu đề "Gốc" ở bên nhận. Khi tôi tạo một yêu cầu simillar bằng cách sử dụng một số công cụ khác (SoapUI, plugin RestClient Chrome, v.v.), tiêu đề được truyền như tôi cung cấp.
Để in tất cả các tiêu đề ở phía bên nhận Tôi đang sử dụng một thực hiện javax.servlet.Filter với:
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));
}
}
Tại sao tiêu đề nguồn gốc không được thông qua khi sử dụng RestTemplate?