HttpURLConnection 设置Host 头部无效

这个问题的起因是在使用FeignClient 设置header信息的时候无效

@FeignClient(url = "http://localhost:8083", name = "demoClient")
public interface FeignTest {
    @RequestMapping(value = "/hello", method = RequestMethod.GET, headers = "host=www.test.com")
    String hello(@RequestParam("id") String id, @RequestParam("name") String name);
}

接收方需要Host信息,但是使用这种方式发出去请求一直报 404,最后跟踪代码发现问题是在添加header的时候会过滤 key 为 host 的 header,最后发现这个策略执行是因为默认情况下这个系统属性sun.net.http.allowRestrictedHeaders
为 false

所以问题就在于把这个属性设置为 true 即可

System.setProperty("sun.net.http.allowRestrictedHeaders", "true");