跨域資源共享CORS(Cross-origin Resource Sharing),是W3C的一個標準,允許瀏覽器向跨源的服務器發起XMLHttpRequest請求,克服ajax請求只能同源使用的限制。關于CORS的詳細解讀,可參考阮一峰大神的博客:跨域資源共享CORS詳解。
1. 遇到的問題:
我用spring-boot 做Rest服務,Vue做前端框架,用了element-admin-ui這個框架做后臺管理。在調試的過程中遇到了如下錯誤:
Preflight response is not successful
2. 分析問題
這個問題是典型的CORS跨域問題。
所謂跨域:
跨域,指的是瀏覽器不能執行其他網站的腳本。它是由瀏覽器的同源策略造成的,是瀏覽器對JavaScript施加的安全限制。
3. 解決方法
在項目中添加類CustomCORSConfiguration 代碼如下:
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;/** * @author spartajet * @description * @create 2018-05-15 下午5:00 * @email spartajet.guo@gmail.com */@Configurationpublic class CustomCORSConfiguration { private CorsConfiguration buildConfig() { CorsConfiguration corsConfiguration = new CorsConfiguration(); corsConfiguration.addAllowedOrigin("*"); corsConfiguration.addAllowedHeader("*"); corsConfiguration.addAllowedMethod("*"); corsConfiguration.setAllowCredentials(true); return corsConfiguration; } @Bean public CorsFilter corsFilter() { UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); source.registerCorsConfiguration("/**", buildConfig()); return new CorsFilter(source); }}以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。
新聞熱點
疑難解答