HttpURLConnection 设置Host 头部无效

Posted 信行合一

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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");

以上是关于HttpURLConnection 设置Host 头部无效的主要内容,如果未能解决你的问题,请参考以下文章

HttpURLConnection 设置Host 头部无效

HttpURLConnection 设置Host 头部无效

我可以在使用 java 的 HttpUrlConnection 类的地方覆盖 Host 标头吗?

HttpURLConnection 超时设置

Java 使用HttpURLConnection 设置头部 设置的Authorization不成功

HttpURLConnection超时设置