SpringBoot使用@CrossOrigin注解后,图片文件上传失败解决方案

@CrossOrigin   //springboot通过跨域请求的注解

在类上面使用@CrossOrigin注解后按理说应该是可以解决跨域问题的,在一般的数据传输当中是没出现问题的,在别人的博客中找到资料说@CrossOrigin注解默认开启了get,post,以及head请求

但是在使用图片文件上传的时候却实现了跨域问题,通过查证资料有两种解决方案

 

解决方案一:

@CrossOrigin(methods = {RequestMethod.GET, RequestMethod.POST, RequestMethod.OPTIONS})

指定开启跨域请求类型,使用post上传可以传输进来文件,但是这里不知道为什么,前端依然会报跨域的错,但是请求码是200.这里先埋个坑,如果有大佬知道了为什么,可以在下方评论区留言一下,以解小弟不解之惑。

解决方案二:


import com.spring4all.swagger.EnableSwagger2Doc;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;

//开启swagger的注解
@EnableSwagger2Doc
@SpringBootApplication
public class VegetablesApplication {

    private CorsConfiguration buildConfig() {
        CorsConfiguration corsConfiguration = new CorsConfiguration();
        corsConfiguration.addAllowedOrigin("*");
        corsConfiguration.addAllowedHeader("*");
        corsConfiguration.addAllowedMethod("*");
        corsConfiguration.setAllowCredentials(true);//这两句不加不能跨域上传文件,
        corsConfiguration.setMaxAge(3600l);//加上去就可以了
        return corsConfiguration;
    }
    /**
     * 跨域过滤器
     * @return
     */
    @Bean
    public CorsFilter corsFilter() {
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        source.registerCorsConfiguration("/**", buildConfig()); // 4
        return new CorsFilter(source);
    }

    public static void main(String[] args) {
        SpringApplication.run(VegetablesApplication.class, args);
    }

}

启动类中配置成这样,加入这两个方法,就完全可以了。前端也不会报跨域失败,请求码200,也是成功的!!

撒花~~~


版权声明:本文为weixin_44016371原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。