前台使用的框架是vue,当用axios的post方式请求后台时会有两次请求。第一次是options请求,当请求成功后,才会第二次请求。
后台使用的框架是SpringBoot。
解决方式就是设置一个拦截器。如下:
package com.hxlwl.admin;
import javax.servlet.MultipartConfigElement;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.MultipartConfigFactory;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.annotation.Bean;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;
@SpringBootApplication
@MapperScan("com.hxlwl.admin.mapper")
@EnableFeignClients
public class AdminServer {
public static void main(String[] args) {
SpringApplication.run(AdminServer.class, args);
}
/**
* 拦截器
*
*/
@Bean
public CorsFilter corsFilter() {
final UrlBasedCorsConfigurationSource urlBasedCorsConfigurationSource = new UrlBasedCorsConfigurationSource();
final CorsConfiguration corsConfiguration = new CorsConfiguration();
corsConfiguration.setAllowCredentials(true);
corsConfiguration.addAllowedOrigin("*");
corsConfiguration.addAllowedHeader("*");
corsConfiguration.addAllowedMethod("*");
urlBasedCorsConfigurationSource.registerCorsConfiguration("/**", corsConfiguration);
return new CorsFilter(urlBasedCorsConfigurationSource);
}
/**
* 文件上传配置
*
* @return
*/
@SuppressWarnings("deprecation")
@Bean
public MultipartConfigElement multipartConfigElement() {
MultipartConfigFactory factory = new MultipartConfigFactory();
// 单个文件最大
factory.setMaxFileSize("102400000B"); // KB,MB
/// 设置总上传数据总大小
factory.setMaxRequestSize("102400000B");
return factory.createMultipartConfig();
}
}