美文网首页
SpringBoot通过CORS解决前端跨域问题

SpringBoot通过CORS解决前端跨域问题

作者: 榷奕 | 来源:发表于2020-02-14 17:25 被阅读0次

1. 问题表现

如果前后端代码部署在不同的服务器上,或者同一个服务器的不同端口上,前端去请求后端数据就有跨域问题。
端口不一样也是跨域,也会有CORS disable问题。

2. 前端的调试小记

(1) CORS调试

右键,检查,console

如果是跨域,这里会写,你被CORS阻止了。

(2) 正常端口调试

右键,检查,network

这里面就会有各种发送的请求以及响应。

3. 跨域问题解决

(1) 加注解,每个都加,@CrossOrigin

如果是直接访问,springboot的某一个接口,直接通过端口号去访问,这种只涉及到一个接口的跨域设置,可以在这个接口上打注解。

(2) springcloud gateway跨域设置

根源在Webflux上边,由于gateway使用的是webflux,而不是springmvc,所以需要先关闭webflux的cors,再从gateway的filter里边设置cors就行了。

package net.youqu.micro.service.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.reactive.CorsWebFilter;
import org.springframework.web.cors.reactive.UrlBasedCorsConfigurationSource;
import org.springframework.web.util.pattern.PathPatternParser;

/**
 * description:
 *
 * @author wangpeng
 * @date 2019/01/02
 */
@Configuration
public class CorsConfig {
    @Bean
    public CorsWebFilter corsFilter() {
        CorsConfiguration config = new CorsConfiguration();
        config.addAllowedMethod("*");
        config.addAllowedOrigin("*");
        config.addAllowedHeader("*");

        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(new PathPatternParser());
        source.registerCorsConfiguration("/**", config);

        return new CorsWebFilter(source);
    }
}

配置yaml:

spring:
  cloud:
    gateway:
      discovery:
      # 跨域
      globalcors:
        corsConfigurations:
          '[/**]':
            allowedHeaders: "*"
            allowedOrigins: "*"
            allowedMethods:
            - GET
              POST
              DELETE
              PUT
              OPTION

相关文章

网友评论

      本文标题:SpringBoot通过CORS解决前端跨域问题

      本文链接:https://www.haomeiwen.com/subject/ypzdfhtx.html