Springboot中實現跨域問題,實現前後端完全分離並方便測試.

1.什麼是跨域?什麼是不跨域?

解釋一:同一個ip、同一個網絡協議、同一個端口,三者都滿足就是同一個域,否則就是

跨域問題了。而爲什麼開發者最初不直接定爲一切可跨域的呢?默認的爲什麼都是不可跨域呢?這就涉及到了同源策

略,爲了系統的安全,由Netscape提出一個著名的安全策略。現在所有支持JavaScript的瀏覽器都會使用這個策略。

所謂同源是,域名,協議,端口相同。當我們在瀏覽器中打開百度和谷歌兩個網站時,百度瀏覽器在執行一個腳本的

時候會檢查這個腳本屬於哪個頁面的,即檢查是否同源,只有和百度同源的腳本纔會被執行,如果沒有同源策略,那

隨便的向百度中注入一個js腳本,彈個惡意廣告,通過js竊取信息,這就很不安全了。

解釋二:跨域請求,就是說瀏覽器在執行腳本文件的ajax請求時,腳本文件所在的服務地址和請求的服務地址不一樣。說白了就是ip、網絡協議、端口都一樣的時候,就是同一個域,否則就是跨域。這是由於Netscape提出一個著名的安全策略——同源策略造成的,這是瀏覽器對JavaScript施加的安全限制。是防止外網的腳本惡意攻擊服務器的一種措施。


2.springboot下解決跨域的方法步驟如下(利用@Configuration配置跨域):

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("*"); // 1
        corsConfiguration.addAllowedHeader("*"); // 2
        corsConfiguration.addAllowedMethod("*"); // 3
        return corsConfiguration;
    }

    @Bean
    public CorsFilter corsFilter() {
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        source.registerCorsConfiguration("/**", buildConfig()); // 4
        return new CorsFilter(source);
    }
}
第二中代碼方法

package com.chengzai.web.home.CorsConfiguration.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

/**
 * 跨域訪問更改權限
 *
 * @author jzwx
 * @version $Id: CorsConfig, v 0.1 2017-09-26 15:39 jzwx Exp $
 */
@Configuration
public class CorsConfig extends WebMvcConfigurerAdapter {
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**").allowedOrigins("*")
            .allowedMethods("GET", "HEAD", "POST", "PUT", "DELETE", "OPTIONS")
            .allowCredentials(false).maxAge(3600);
    }
}

①在項目能夠掃描的的配置模塊下導入該Java文件(CorsConfig.java).

②啓動Tomcat,windows+R輸入cmd在DOS下輸入ipconfig查詢自己的ipv4地址,然後將自己局域網IP和端口號還有訪問路徑(自己的Controller目錄中的路徑)發送給前端這就就可以進行前後端聯調了.

注意:springboot下注釋WebSecurityConfiguration.java+MultiHttpSecurityConfig.java文件就不需要登錄了

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