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是期望的域名地址了。

posted @ 2020-11-28 10:02  八方鱼  阅读(1568)  评论(0)    收藏  举报