跨域問題解決

個人理解的跨域:
1.存在於B/S架構
2.前端請求後端
3.前端和被訪問的服務不在同一個服務器上。比如前端部署在10.27.20.59
而後端部署在10.27.20.60,那麼前端請求後端時候就會出現請求不了。當然這種項目是前後端分離的。
此時就需要解決這種問題——跨域。一般在後端處理即可,以下是兩種個人常用的方式:

  • 註解方式
    在需要跨域訪問的接口(方法)上加上註解,細粒度配置。springMVC的版本要在4.2或以上版本才支持@CrossOrigin。代碼如下:
@CrossOrigin(origins = {"*"}, methods = {RequestMethod.GET})

其中@CrossOrigin中的2個參數:

origins : 允許可訪問的域列表

maxAge:準備響應前的緩存持續的最大時間(以秒爲單位)。

  • 配置類方式
    全局控制跨域,代碼如下:
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("*");
        return corsConfiguration;
    }
    @Bean
    public CorsFilter corsFilter() {
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        //註冊
        source.registerCorsConfiguration("/**", buildConfig());
        return new CorsFilter(source);
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章