spring boot2 (31)-cors跨域请求

假如我们开发了一些接口部署到网上,而我们的客户也有一个网站,会通过ajax请求我们的接口,并将结果展示到他们的网站,这就是跨域。


直接请求No Access-Control-Allow-Origin

我现在192.168.112.1上启动一个客户项目,用jquery向接口服务器192.168.112.150:8080/test发起ajax请求

	$.ajax({
		url : 'http://192.168.112.150:8080/test',
		type : 'get',
		success : function(d) {
		}
	});

浏览器控制台会报错:No 'Access-Control-Allow-Origin' header is present on the requested。意思是该资源不允许跨域请求。

配置跨域请求

在接口服务器做以下配置,/**表示所有接口允许跨域,也可以只配置一部分接口,再次请求就不会报错了。

@SpringBootConfiguration
public class Config implements WebMvcConfigurer{

	public void addCorsMappings(CorsRegistry registry) {
		registry.addMapping("/**");
	}
}

设置白名单

以上配置,默认所有其他服务都可以发起跨域请求,存在安全问题,修改修改可以设定只允许指定ip跨域请求

		registry.addMapping("/**")
			.allowedOrigins("http://192.168.112.1:8081");
注意:此时在浏览器用localhost请求html是不能跨域的,因为这里配的是ip,所以只认ip域名,参数中可以配多个ip。

关于WebMvcConfigurer

第19篇中我用extends WebMvcConfigurerAdapter来实现web mvc配置,这在spring boot2中已经不建议使用,而推荐使用implements WebMvcConfigurer接口的方式实现web mvc配置。

猜你喜欢

转载自blog.csdn.net/wangb_java/article/details/80641539