最近一段時間中,在編寫的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!!!