不用調整Nginx,SpringBoot也能解決前端訪問的跨域問題


1、什么情況下會出現跨域問題

通常,在前端工程師的開發過程中,往往在本地機器啟動前端服務, 而調用的后端接口服務是在另外一台機器運行,這時就會出現跨域問題,讓接口無法調通。

而到了測試環境和生產環境,可以使用Nginx去解決這個問題。

這里我們僅考慮開發環境,在不借助Nginx的情況下,解決跨域。

2、解決方案

在SpringBoot工程中,增加跨域配置即可。

3、實現

新增一個跨域配置類 CrossDomainConfig,在其中配置允許跨域訪問的url、請求方式、Header等。代碼如下:

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 CrossDomainConfig{

    public CrossDomainConfig() {

    }
  private CorsConfiguration buildConfig() {
    
     // 添加cors配置信息
      CorsConfiguration corsConfiguration = new CorsConfiguration();
     corsConfiguration.addAllowedOrigin("http://localhost:8080");
      // * 代表所有url
        corsConfiguration.addAllowedOrigin("*");

        // 設置允許請求的方式
        corsConfiguration.addAllowedMethod("*");

        // 設置允許的header
        corsConfiguration.addAllowedHeader("*");
        
        // 設置是否發送cookie信息
        corsConfiguration.setAllowCredentials(true);

      return corsConfiguration;
  }

    @Bean
    public CorsFilter corsFilter() {
         
        // 為url添加映射路徑
        UrlBasedCorsConfigurationSource crossDomainSource = new UrlBasedCorsConfigurationSource();
        crossDomainSource.registerCorsConfiguration("/**", buildConfig()); 
        
        // 返回重新定義好的配置
        return new CorsFilter(crossDomainSource); 
    } 
}

重啟后台工程,會發現,跨域問題被如此簡單的解決了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM