Feign Client 未转发自定义主机头

问题描述

我正在尝试使用 feign 客户端发送自定义主机标头,但消费者应用程序没有选择它们。我使用的是 spring boot feign 而不是 openfeign。

除了 Host 之外,所有其他标头似乎都按预期工作。

 ResponseEntity<JSONObject> list(@PathVariable("name") String name,@RequestParam("id") String id,@RequestParam("modelName") String modelName,@RequestHeader(value = "Authorization",required = true) String authorizationHeader,@RequestHeader(value = "Host",required = true) String hostName);

当我将主机名作为“xyz.com”传递时,消费者应用程序仍采用认主机标头。

在消费者代码中,当我从控制器类读取主机头的值时,我没有得到 zyz.com。相反,它从 dns 名称中选择。

解决方法

我也遇到了同样的问题 - @Param@Headers 对“Host”标头不起作用。 我更改的两件事解决了该问题 - 使用 OkHttpClient,并在构建客户端时添加 requestInterceptor

client = Feign.builder()
    .client(new OkHttpClient())
    .requestInterceptor(request -> request.header("Host",hostHeaderValue))
    .target(MyClient.class,url);

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...