RestTemplate 未传递源标头
2022-09-03 04:41:39
我正在尝试使用Spring的RestTemplate提出跨域请求。通信在两个Spring-boot webapp之间完成,这两个Webapp都在本地主机上运行,但端口不同。我所做的是:
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);
调用被执行,“Authorization”标头传递得很好,但无论我尝试什么,接收端都没有“Origin”标头。当我使用其他工具(SoapUI,RestClient Chrome插件等)创建模拟请求时,标头将像我提供的那样传递。
为了打印接收端的所有标头,我使用javax.servlet.Filter的实现:
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));
}
}
为什么使用 RestTemplate 时未传递源标头?