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);
		    }
		}
相关推荐
野蛮人6号2 小时前
黑马微服务报错以及解决前23节课
spring boot·微服务·mybatis
计算机毕设VX:Fegn08952 小时前
计算机毕业设计|基于springboot + vue汽车销售系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·汽车·课程设计
IT枫斗者2 小时前
Java 开发实战:从分层架构到性能优化(Spring Boot + MyBatis-Plus + Redis + JWT)
java·spring boot·sql·mysql·性能优化·架构
聆风吟º2 小时前
【Spring Boot 报错已解决】Spring Boot项目启动报错 “Main method not found“ 的全面分析与解决方案
android·spring boot·后端
艺杯羹2 小时前
掌握Spring Boot配置艺术:从YAML基础到实战进阶
java·spring boot·后端·yaml
苹果醋33 小时前
java设计模式之责任链模式
java·运维·spring boot·mysql·nginx
小韩博3 小时前
小迪第40天:安全开发-JavaEE应用&SpringBoot框架&JWT身份鉴权&打包部署JAR&WAR
spring boot·安全·web安全·java-ee
Qiuner3 小时前
Spring Boot AOP(三) 通知执行链源码解析
java·spring boot·后端
武昌库里写JAVA3 小时前
Java设计模式-(创建型)抽象工厂模式
java·vue.js·spring boot·后端·sql
memgLIFE12 小时前
Springboot 分层结构
java·spring boot·spring