Vue axios.post 跨域OPTIONS问题
总结:
axios POST请求可能会被判断为复杂跨域请求,此时会发送一个OPTIONS请求进行预检,@CrossOrigin并不能处理OPTIONS请求(我在其源码中没找到相关配置)。这时我们应当过滤OPTIONS请求或规定处理方法。
配置:
package com.zhiyou.library.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class CorsConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
// 是否发送Cookie
.allowCredentials(true)
// 放行哪些原始域
.allowedOriginPatterns("*")
// *放行哪些请求方式-》关键配置
.allowedMethods("GET", "HEAD", "POST","PUT", "DELETE", "OPTIONS")
// 放行哪些原始请求头部信息
.allowedHeaders("*")
// 暴露哪些头部信息
.exposedHeaders("*");
}
}
注意上方配置中的内容:
// *放行哪些请求方式-》关键配置
.allowedMethods("GET", "HEAD", "POST","PUT", "DELETE", "OPTIONS")
也可以去掉"OPTIONS",不接收这种请求。
结果:
可以看到已正常接受OPTIONS请求