如何设置支持跨域请求

现代浏览器出于安全的考虑,HTTP 请求时必须遵守同源策略,否则就是跨域的HTTP 请求,默认情况下是被禁止的,IP (域名)不同或者端口不同、协议不同(比如HTTP 、HTTPS ) 都会造成跨域问题。

一般前端的解决方案有:
1、用JSONP 来支持跨域的请求,JSONP 实现跨域请求的原理简单的说,就是动态创建< script >标签,然后利用< script> 的SRC 不受同源策略约束来跨域获取数据。缺点是需要后端配合输出特定的返回信息。
2、利用反向代理的机制来解决跨域的问题,前端请求的时候先将请求发送到同源地址的后端,通过后端请求转发来避免跨域的访问。

后来HTML5 支持了CORS 协议。CORS 是一个W3C标准,全称是" 跨域资源共享" ( Cross-origin resource sharing) ,允许浏览器向跨域服务器,发出XMLHttpRequest 请求,从而克服了AJAX 只能同源使用的限制.它通过服务器增加一个特殊的Header[Access-Contro1- Allow-Origin) 来告诉客户端跨域的限制,如果浏览器支得CORS 、并且判断。Origin通过的话,就会允许XMLHttpReq uest 发远跨域请求。
前端使用了CORS 协议,就需要后端设重支持非同源的请求, Spring Boot 设置支持非同源的请求有两种方式。

第一种, 配置CorsFilter

@Configuration
public class GlobalCorsConfig {
	@Bean
	public CorsFilter corsFilter() {
		CorsConfiguration config = new CorsConfiguration();
		config.addAIIowedOrigin("*");
		config.setAllowCredentials(true);
		config.addAIIowedMethod("*");
		config.addAllowedHeader("*");
		config.addExposedHeader("*");
		UrlBasedCorsConfigurationSource configSource = new UrlBasedCorsConfigurationSource();
		configSource.registerCorsConfiguration("/**", config);
		
		return new CorsFilter(configSource);
	}
}

第二种,相对简单一点

public class Application extends WebMvcConfigurerAdapter {
	@Override
	public void addCorsMappings(CorsRegistry registry) {
		registry.addMapping("/**")
		.allowCredentials(true)
		.allowedHeaders("*")
		.allowedOrigi ns("*")
		.allowedMethods("*");
	}
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值