RestTemplate 请求中添加headers项Host不生效
原文地址:https://blog.csdn.net/qq_34924288/article/details/97629765
RestTemplate template = new RestTemplate(); HttpHeaders headers = new HttpHeaders(); headers.add(HttpHeaders.HOST,"www.xxx某个网站域名.com"); ResponseEntity<String> response = template.exchange( "http://请求的ip地址", HttpMethod.GET, new HttpEntity<String>(headers), String.class); System.out.println(response);
问题截图如下:


当时就觉得见鬼了,于是就通过WireShark抓请求包,比较发现,发送出去的请求headers里带的Host不一致,


可以看到,RestTemplate 请求中设置的Host没有生效,好嘛,总算是知道问题出在哪儿了,解决方法:
RestTemplate template = new RestTemplate(); HttpHeaders headers = new HttpHeaders(); // 添加下面这行代码 System.setProperty("sun.net.http.allowRestrictedHeaders", "true"); headers.add(HttpHeaders.HOST,"www.xxx某个网站域名.com"); ResponseEntity<String> response = template.exchange( "http://请求的ip地址", HttpMethod.GET, new HttpEntity<String>(headers), String.class); System.out.println(response);
再次运行,抓包,可以看到Host是期望的域名地址了。

浙公网安备 33010602011771号