springcloud feign 跨域调用

本文详细介绍了在真实项目环境中,当微服务部署在不同物理机上时,使用SpringCloud Feign进行跨域调用可能遇到的问题及解决方法。重点在于确保服务在Eureka注册中心正确注册,并通过修改消费方服务的hosts文件来解决服务名无法识别的错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

springcloud feign 跨域调用

我们在学习springcloud的时候教程视频都是以一台电脑做演示。在我们真实的项目中肯定不可能所有的微服务都放在同一台电脑(勿使用一台电脑搭载多太虚拟机,会出现乱七八糟的情况,请使用真正的物理机)。多台通过feign调用时,会报错找不到某服务名。
解决方案:
1.确保在eureka注册服务列表中存在“提供方服务”和“消费方服务”
在这里插入图片描述
2.在“消费方服务”10.204.158.49中修改电脑hosts文件
添加 10.204.125.224 Administrator 并保存 注意 Administrator不是“提供方服务”服务名,搞定!
在这里插入图片描述
博文仅提供参考

### 解决Feign调用中的CORS请求 当使用Feign进行远程调用时遇到问题,可以通过多种方式来处理CORS(Cross-Origin Resource Sharing)。一种常见的方式是在提供服务的一方设置响应头以允许特定源的访问。 对于Spring Cloud应用,在微服务架构下可以利用`@CrossOrigin`注解或是全局配置的方式来开启CORS支持。具体来说: - **通过控制器方法上的`@CrossOrigin`注解**:可以在每个需要开放访问的服务端点上加上此注解[^1]。 ```java @RestController @RequestMapping("/api/v1") public class MyController { @CrossOrigin(origins = "http://example.com", maxAge = 3600) @GetMapping("/user/{id}") public User getUserById(@PathVariable Long id){ // 方法逻辑... } } ``` - **全局配置CORS过滤器**:如果希望整个应用程序都能接受来自任何地方的请求,则可以选择定义一个WebMvcConfigurer并重写addCorsMappings方法。 ```java @Configuration public class WebConfig implements WebMvcConfigurer { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**") .allowedOrigins("*")// 允许所有的来源地址, 生产环境中建议指定具体的URL .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS") .maxAge(3600); } } ``` 另外,在某些情况下可能还需要调整网关层面的设置以便正确转发带有预检请求(PREFLIGHT REQUESTS)的HTTP OPTIONS请求给下游服务。这通常涉及到修改API Gateway的相关配置文件或编码实现[^3]。 最后值得注意的是,虽然上述措施可以帮助解决大部分场景下的难题,但在实际开发过程中还需考虑安全性因素,比如不应无条件信任所有外部站点(`*`)发出的请求;而是应该尽可能缩小许可范围至必要的合作伙伴网站列表内。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值