建网站选服务器,seo外包费用,网络营销方式落后的表现,网站建站网站626969先说说什么是跨域。 请求的URL地址中的协议、域名、端口号中的任意一个与当前URL不同就是跨域。 比如#xff1a;
当前页面的URL请求的URL是否跨域原因htttp://localhost:8080htttps://localhost:8080是协议不同htttp://localhostll:8080htttp://localhost:8080是域名不同htt… 先说说什么是跨域。 请求的URL地址中的协议、域名、端口号中的任意一个与当前URL不同就是跨域。 比如
当前页面的URL请求的URL是否跨域原因htttp://localhost:8080htttps://localhost:8080是协议不同htttp://localhostll:8080htttp://localhost:8080是域名不同htttp://localhost:8080htttp://localhost:8081是端口号不同
那么为什么会出现跨域问题 这都是因为浏览器的同源策略为了保证浏览器安全防止恶意的网站攻击浏览器限制了从不同源之间的交互。在不同源的情况下无法发送Ajax请求如果请求浏览器就会报错。 这里我的前端跑在8081端口下后端跑在8080端口上 虽然协议和域名都相同但是端口号不同这种情况就是跨域问题了所以前端页面向后端发送请求就报错了。
这里有三种解决方案且都是后端的解决方案
报错信息截图 SpringBoot项目中解决跨域的3中方案
第一种 在目标方法上添加CrossOrigin注解 添加注解后重新启动项目前端发送请求后端接收到请求后并成功响应了请求。 第二种开启跨域资源共享 跨域资源共享Cross-Origin Resource Sharing简拼为 CORS是一种基于 HTTP 头信息的机制通过允许服务器标识除了它自己以外的资源从而实现跨域访问。 添加一个配置类就ok了。
Configuration
public class CorsConfig {Beanpublic CorsFilter corsFilter(){CorsConfiguration configuration new CorsConfiguration();//设置允许的域名configuration.addAllowedOrigin(*);//设置原始头信息configuration.addAllowedHeader(*);//设置允许所有的请求方法跨域调用configuration.addAllowedMethod(*);//创建source对象UrlBasedCorsConfigurationSource source new UrlBasedCorsConfigurationSource();//添加映射路径source.registerCorsConfiguration(/**,configuration);return new CorsFilter(source);}
}第三种 实现WebMvcConfigurer接口重写addCorsMappings方法
Configuration
public class CorsConfiguration implements WebMvcConfigurer {Overridepublic void addCorsMappings(CorsRegistry registry) {registry.addMapping(/**).allowedOriginPatterns(*).allowedMethods(GET,DELETE,PUT,POST,HEAD,OPTIONS).allowCredentials(true).allowedHeaders(*);}
}