SpringBoot跨域CORS问题处理

SpringBoot跨域问题处理

跨域:指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对javascript施加的安全限制。

跨域:浏览器对于javascript的同源策略的限制。下面几种情况都属于跨域:

1、域名不同  www.jd.com 与 www.taobao.com
2、端口不同  www.jd.com:8080 与 www.jd.com:8081
3、二级域名不同 item.jd.com 与 miaosha.jd.com
4、http和https也属于跨域

当我们调用前端接口,我们使用Postman可以成功调用接口,但是前端调用接口就是调用不成功,这样很可能就是跨域问题,前端控制台报错是这样的,我们要调用的端口是8090,而我们自己本页面的端口是5173,因此出现了跨域问题

Access to XMLHttpRequest at 'http://127.0.0.1:8090/IPV4/getIPV4Info' from origin 'http://127.0.0.1:5173' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

跨域问题可以用nginx处理也可以前端处理,我们这使用SpringBoot处理,那么我们知道跨域问题的产生,我们可以在SpringBoot拦截器这边做处理,创建一个CorsConfig配置文件来拦截处理

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

@Configuration
public class CorsConfig extends WebMvcConfigurationSupport {
    @Override
    protected void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowedHeaders("*")
                .allowedMethods("POST", "GET")
                .maxAge(1800);
        super.addCorsMappings(registry);
    }
}

前端重新调用接口,成功调用了接口

posted @ 2022-10-14 11:41  HeiDaotu  阅读(105)  评论(0编辑  收藏  举报