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);
}
}
前端重新调用接口,成功调用了接口