CORS解決跨域問題(403問題)


1、什么是跨域問題?

  跨域問題是瀏覽器對於ajax請求的一種安全限制:一個頁面發起的ajax請求,只能是用當前頁同域名同端口的路徑,這能有效的阻止跨站攻擊。

 

2、跨域問題出現的條件:

  1、跨域問題是ajax請求特有的問題。

     2、前后端的域名、端口不一致。

3、CORS跨域解決原理簡單分析:

  CORS需要瀏覽器和服務器的同時支持。

 

  瀏覽器端(瀏覽器自動完成):

    發送兩次請求,第一次發送option請求 --詢問服務器端是否可以跨域;

    第二次才發送正式請求。

 

  服務器端:

    通過攔截器/過濾器統一實現,過濾器過濾所有的請求,匹配對應的ip+端口,如果符合條件,則在響應頭中添加允許跨域訪問的信息

4、CORS跨域解決方案:

  1、  在網關中配置一個CORS的跨域過濾器:SpringMVC已經幫我們寫好了CORS的跨域過濾器,直接使用即可。

  2、  在網關中創建一個配置文件告訴過濾器允許通過的域名和端口即可。

 

  在網關中添加如下配置文件即可(springMVC環境下)

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 GlobalCorsConfig {
    @Bean
    public CorsFilter corsFilter() {
        //1.添加CORS配置信息
        CorsConfiguration config = new CorsConfiguration();
        //1) 允許通過的域,不要寫*,否則cookie就無法使用了
        config.addAllowedOrigin("http://127.0.0.1:7001");
        config.addAllowedOrigin("http://localhost:7001");
        //2) 是否發送Cookie信息
        config.setAllowCredentials(true);
        //3) 允許的請求方式
        config.addAllowedMethod("OPTIONS");
        config.addAllowedMethod("HEAD");
        config.addAllowedMethod("GET");
        config.addAllowedMethod("PUT");
        config.addAllowedMethod("POST");
        config.addAllowedMethod("DELETE");
        config.addAllowedMethod("PATCH");
        // 4)允許的頭信息
        config.addAllowedHeader("*");
        //2.添加映射路徑,我們攔截一切請求
        UrlBasedCorsConfigurationSource configSource = new
                UrlBasedCorsConfigurationSource();
        configSource.registerCorsConfiguration("/**", config);
        //3.返回新的CorsFilter.
        return new CorsFilter(configSource);
    }
}

 


免責聲明!

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



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