SpringBoot项目通过Cors来解决跨域访问的问题

最近一段时间中,在编写的springboot项目中需要解决不同系统之间进行跨域访问的问题,由于多个系统之间需要进行数据的传递,而项目之间又需要请求其他项目的接口获取数据,因此我根据网上查到的资料,通过Cors来解决不同系统之间跨域访问请求被拒绝的问题。

CORS(Cross-Origin Resource Sharing)“跨域资源共享”,是一个W3C标准,它允许浏览器向跨域服务器发送Ajax请求,打破了Ajax只能访问本站内的资源限制,CORS在很多地方都有被使用,微信支付的JS支付就是通过JS向微信服务器发送跨域请求。开放Ajax访问可被跨域访问的服务器大大减少了后台开发的工作,前后台工作也可以得到很好的明确以及分工,下面我们就看讲一下如何让你的SpringBoot项目支持CORS跨域。

1.首先,你需要去构建你自己的SpringBoot项目,在项目中添加Web依赖即可,当然你也可以添加其他你需要用到的依赖。

这里我不详细的描述如何去创建一个springboot项目了,由于他的过程相对来说比较简单,你也可以去网上查找创建springboot项目的资料,或者查看我的其他博客去创建一个springboot项目。

2.在springboot项目中添加Cors配置文件。

CORSConfiguration

你可以在自己项目中的/src/main/java/下新建一个com/demo/config(名字可自己起,不影响)的包(package),在里面右击New 一个class ,创建一个类,名称为CorsConfig(名字自起)

cors配置类内容代码如下:

package com.demo.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;

@Configuration
public class CorsConfig {
	private CorsConfiguration buildConfig() {
        CorsConfiguration corsConfiguration = new CorsConfiguration();
        corsConfiguration.addAllowedOrigin("*"); // 允许任何域名使用
        corsConfiguration.addAllowedHeader("*"); // 允许任何头
        corsConfiguration.addAllowedMethod("*"); // 允许任何方法(post、get等)
        return corsConfiguration;
    }

    @Bean
    public CorsFilter corsFilter() {
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        source.registerCorsConfiguration("/**", buildConfig()); // 对接口配置跨域设置
        return new CorsFilter(source);
    }
}

上述为配置类的代码。下面我们来描述一下cors配置类中相关内容。

根据上图,在buildConfig方法中,我们知道ajax发送url请求时仅限于访问本站资源,而cors配置则允许任何域名访问资源,允许任意请求头部,以及允许任意请求方式。这就使得跨域访问得以实现。当然,个人认为这样的设置方式是较为不安全的,你可以根据自己需要访问资源内容的不同,去限制访问 资源的格式,这样能够使得跨域访问资源更为安全。

只需要在你的springboot项目中添加配置类CORSConfig文件即可完成对跨域访问请求的配置以及实现了。

d=====( ̄▽ ̄*)b!!!

你可能感兴趣的:(springboot,跨域访问资源,ajax,cors)