我对 Spring Cloud Feign 很陌生,正在尝试发送服务提供商所需的 HTTP 标头。这是代码片段
@FeignClient(name = "authentication", url = "http://localhost:3000/api")
public interface AuthenticationService {
@PostMapping(value = "/login")
JsonNode login(@RequestHeader("Origin") String origin, @RequestBody LoginParams parameters);
}
当我尝试发送
Origin
标头时,服务器不会收到此标头。但其他标头(例如 referer
或 x-access-token
)已在服务器上成功接收。
我也尝试过使用
RequestInterceptor
但未能成功发送 Origin
作为标题。
@Component
public class HeaderInterceptor implements RequestInterceptor {
@Override
public void apply(RequestTemplate requestTemplate) {
requestTemplate.removeHeader("origin");
requestTemplate.header("origin", "http://amjad.localhost:3000/");
}
}
任何提示或帮助将不胜感激。
干杯!
我对 OpenFeign 也有类似的问题。 “Origin”标头默认被阻止,因为它使用旧的 Java http 客户端。
更改为OkHttp Client后,发送了“Origin”。
有关 JDK HttpClient 解决方案的详细答案可以在 Setting "Origin" and "Access-Control-Request-Method" headers with Jersey Client
找到