如何解决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);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。