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);
		    }
		}
相关推荐
麦兜*7 小时前
MongoDB Atlas 云数据库实战:从零搭建全球多节点集群
java·数据库·spring boot·mongodb·spring·spring cloud
麦兜*7 小时前
MongoDB 在物联网(IoT)中的应用:海量时序数据处理方案
java·数据库·spring boot·物联网·mongodb·spring
汤姆yu7 小时前
基于springboot的毕业旅游一站式定制系统
spring boot·后端·旅游
计算机毕业设计木哥8 小时前
计算机毕设选题推荐:基于Java+SpringBoot物品租赁管理系统【源码+文档+调试】
java·vue.js·spring boot·mysql·spark·毕业设计·课程设计
hdsoft_huge18 小时前
Java & Spring Boot常见异常全解析:原因、危害、处理与防范
java·开发语言·spring boot
AD钙奶-lalala20 小时前
SpringBoot实现WebSocket服务端
spring boot·后端·websocket
毕设源码-朱学姐21 小时前
【开题答辩全过程】以 4S店汽车维修保养管理系统为例,包含答辩的问题和答案
java·spring boot·汽车
BXCQ_xuan1 天前
软件工程实践二:Spring Boot 知识回顾
java·spring boot·后端
wuxuanok1 天前
SpringBoot -原理篇
java·spring boot·spring
云动雨颤1 天前
Spring Boot配置优化:Tomcat+数据库+缓存+日志,全场景教程
数据库·spring boot·tomcat