SpringBoot和Vue前后端项目中,使用axios发送请求,产生跨域问题的解决方法

大家可以看一下,是不是如下的错误
在这里插入图片描述
Access to XMLHttpRequest at ‘http://localhost:8088/user/login’ from origin ‘http://localhost:8080’ has been blocked by CORS policy: No ‘Access-Control-Allow-Origin’ header is present on the requested resource.

当时我在做SpringBoot和Vue前后端分离项目的时候,被这个问题搞了一天,百度了很久都没看见一个能解决问题文章,不过好在被我找到了一篇文章,只不过那篇文章不怎么详细,这里我给大家整理的详细一点。

跨域问题前端和后端都可以解决的,这里讲两种方法,都是从后端解决。
第一种:
使用@CrossOrigin注解,将@CrossOrigin注解添加在SpringBoot项目的主启动类上,这种方式的有点在于简单,一个注解即可解决问题,这种方式是我在b站听课的时候看见的,视频里面是可以解决跨域问题的,但是我个人的项目中是无法解决跨域问题,所以第一种我不推荐。
SpringBoot和Vue前后端项目中,使用axios发送请求,产生跨域问题的解决方法_第1张图片
第二种:使用过滤器
这种方式也不算太难,这个就是我百度发现的,解决了我的问题,其实在之前我也用过这个方法,只是现在忘记了。今天写出来的原因就是为了让能解决问题的文章多一点,能帮助大家更快的解决问题,而不是像我今天一样,找了一整天才解决。
使用方法如下,创建一个类加上@Configuration注解并继承WebMvcConfigurerAdapter抽象类,再重写addCorsMappings方法,代码如下。

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

@Configuration
public class AccessControlAllowOriginFilter extends WebMvcConfigurerAdapter {
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/*/**")
                .allowedOrigins("http://localhost:8080")
                .allowedMethods("GET", "POST","UPDATE","DELETE")
                .allowCredentials(false).maxAge(3600);
    }
}

代码截图也给一份,因为没背景的代码看起来没感觉
SpringBoot和Vue前后端项目中,使用axios发送请求,产生跨域问题的解决方法_第2张图片
本次的文章到此就结束了,希望这两种方法能解决你的问题。

你可能感兴趣的:(vue,spring,boot,ajax跨域问题)