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!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章