springboot 实现跨域的几种方式

1、跨域的原因:

由于同源策略(Same Origin Policy)的限制,浏览器不允许跨域请求。同源策略规定,A网页设置的Cookie、LocalStorage和IndexDB无法被同源以外的网页读取。

2、原因:

1)浏览器的同源策略(Same Origin Policy)限制了跨域请求。主要出于安全考虑,浏览器限制脚本只能读取与之同源的资源。同源指的是协议、域名、端口都相同。跨域请求会因为违反同源策略而被阻止

2)Cookie和本地存储也遵循同源策略。A域名下的页面无法读取B域名下的Cookie、localStorage等

3)跨域JavaScript请求会报错。比如A页面请求B页面的JS文件,就会报错

3、常见跨域请求

1)JSONP:通过script标签加载JS文件来实现跨域通信

2)CORS:服务器端设置HTTP头,允许指定的请求来源跨域访问

3)postMessage:A域的window向B域的window发送消息,实现跨域通信

4、实现跨域的几种方式

1)@crossOrigin 注解

复制代码
    @CrossOrigin(origins = "http://domain1.com")
	@RestController
	public class TestController {
	    @GetMapping("/test")
	    public String test() {
	        return "hello";
	    }
	}

2)过滤器CorsFilter

@Configuration

复制代码
	public class CorsConfig {
	    @Bean
	    public CorsFilter corsFilter() {
	        CorsConfiguration config = new CorsConfiguration();
	        config.setAllowCredentials(true);
	        config.addAllowedOrigin("http://domain1.com");
	        config.addAllowedHeader("*");
	        config.addAllowedMethod("*");
	        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
	        source.registerCorsConfiguration("/**", config);
	        return new CorsFilter(source);
	    }
	}

3).配置类WebMvcConfigurer

描述:可以在WebMvcConfigurer接口的addCorsMappings()方法中添加跨域配置

复制代码
	    @Configuration
		public class CorsConfig implements WebMvcConfigurer {
		    @Override
		    public void addCorsMappings(CorsRegistry registry) {
		        registry.addMapping("/**")
		            .allowedOrigins("http://domain1.com")
		            .allowedMethods("GET", "POST", "PUT", "OPTIONS", "DELETE", "PATCH")
		            .allowedHeaders("*")
		            .allowCredentials(true);
		    }
		}
相关推荐
无人不xiao4 小时前
若依 springBoot 配置国际化
spring boot
JosieBook4 小时前
【SpringBoot】32 核心功能 - 单元测试 - JUnit5 单元测试中的嵌套测试与参数化测试详解
spring boot·单元测试·log4j
小坏讲微服务5 小时前
Nginx集群与SpringCloud Gateway集成Nacos的配置指南
spring boot·nginx·spring cloud·gateway
计算机学姐6 小时前
基于SpringBoot的新闻管理系统【协同过滤推荐算法+可视化统计】
java·vue.js·spring boot·后端·spring·mybatis·推荐算法
一 乐6 小时前
远程在线诊疗|在线诊疗|基于java和小程序的在线诊疗系统小程序设计与实现(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端·小程序
serendipity_hky6 小时前
【微服务 - easy视频 | day04】Seata解决分布式事务
java·spring boot·分布式·spring cloud·微服务·架构
大菠萝学姐6 小时前
基于springboot的旅游攻略网站设计与实现
前端·javascript·vue.js·spring boot·后端·spring·旅游
q_19132846958 小时前
基于SpringBoot+Vue2的美食菜谱美食分享平台
java·spring boot·后端·计算机·毕业设计·美食
刘一说9 小时前
Spring Boot 中的定时任务:从基础调度到高可用实践
spring boot·后端·wpf
小坏讲微服务9 小时前
使用 Spring Cloud Gateway 实现集群
java·spring boot·分布式·后端·spring cloud·中间件·gateway