Springcloud怎么实现跨域?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Springcloud怎么实现跨域?相关的知识,希望对你有一定的参考价值。

网上的答案加注解啥的都没用,实在没办法了

参考技术A 在开发中,我们常用httpClient去远程调用其他系统的接口,一般情况下,需要我们指定调用的url,feign也实现了一套远程调用的方法,并且更为优雅。
1.添加依赖

<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-feign</artifactId>
</dependency>
2.创建FeignClient接口(用于指定远程调用的服务)

// 申明这是一个Feign客户端,并且指明服务id
@FeignClient(value = "com-spring-caclulate")
public interface CacluFeignClient

// 这里定义了类似于SpringMVC用法的方法,就可以进行RESTful的调用了
@RequestMapping(value = "/caclu/num", method = RequestMethod.GET)
public Item caclulate(@PathVariable("num") Integer num);


注意:这里就是一个接口。
3.在需要进行远程调用的方法里注入该接口,并调用对应的api接口方法

@Autowired
private CacluFeignClient cacluFeignClient ;

@GetMapping(value = "query/result")
public Integer caclulate()
cacluFeignClient.caclulate(1);

4.在启动类上添加注解 @EnableFeignClients,表示支持Feign

FeignClient接口和spring mvc接口的格式一致,在调用方的方法中,我们只需要调用本系统中定义的接口即可。

springcloud gateway解决跨域问题

/**
 * 跨域允许
 */
@Configuration
public class CorsConfig {
 
    @Bean
    public WebFilter corsFilter() {
        return (ServerWebExchange ctx, WebFilterChain chain) -> {
            ServerHttpRequest request = ctx.getRequest();
            if (CorsUtils.isCorsRequest(request)) {
                ServerHttpResponse response = ctx.getResponse();
                HttpHeaders headers = response.getHeaders();
                headers.set(HttpHeaders.ACCESS_CONTROL_ALLOW_ORIGIN, "*");
                headers.add(HttpHeaders.ACCESS_CONTROL_ALLOW_HEADERS, "*");
                headers.add(HttpHeaders.ACCESS_CONTROL_ALLOW_METHODS, "");
                headers.add(HttpHeaders.ACCESS_CONTROL_ALLOW_CREDENTIALS, "true");
                headers.add(HttpHeaders.ACCESS_CONTROL_EXPOSE_HEADERS, "*");
                headers.add(HttpHeaders.ACCESS_CONTROL_MAX_AGE, "3600");
                if (request.getMethod() == HttpMethod.OPTIONS) {
                    response.setStatusCode(HttpStatus.OK);
                    return Mono.empty();
                }
            }
            return chain.filter(ctx);
        };
    }
}

参考博客:https://blog.csdn.net/a294634473/article/details/90715903


以上是关于Springcloud怎么实现跨域?的主要内容,如果未能解决你的问题,请参考以下文章

springCloud入门

spring跨域 post 400 错误的请求怎么解决

SpringCloud H版 Config+Bus 实现全局配制刷新

springcloud-Finchley学习笔记-springboot项目跨域配置

springcloud:配置中心和消息总线(配置中心终结版)

springcloud:配置中心和消息总线(配置中心终结版)