亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么解決springboot設置CorsFilter跨域不生效問題

發布時間:2021-11-16 10:26:20 來源:億速云 閱讀:649 作者:iii 欄目:開發技術

這篇文章主要講解了“怎么解決springboot設置CorsFilter跨域不生效問題”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“怎么解決springboot設置CorsFilter跨域不生效問題”吧!

設置CorsFilter跨域不生效的解決

問題描述

公司的前后端開發項目工程,在本地調試的時候遇到了跨域的問題,同事調我的服務一直提示跨域問題,然后前端nb他自己在哪里做了跨域處理,類似nginx那種,但是我還是百度去看了一下,在一個大佬的博客中發現了解決方案。

問題原因是是寫的判斷登錄的filter影響了登錄,原因是的這個filter執行順序在corsfilter之前導致,于是修改了一下跨域設置的配置文件

解決方案

/**
 * 使用CORS,用于解決ajax跨域訪問問題
 */
@Configuration
public class GlobalCorsConfig {
    @Bean
    public FilterRegistrationBean corsFilter() {
        //1.添加CORS配置信息
        CorsConfiguration config = new CorsConfiguration();
        //1) 允許的域,不要寫*,否則cookie就無法使用了
        //config.addAllowedOrigin("http://manage.leyou.com");
        //config.addAllowedOrigin("http://www.leyou.com");
        config.addAllowedOrigin("*");
        //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");
        config.setMaxAge(3600L);
        // 4)允許的頭信息
        config.addAllowedHeader("*");
 
        //2.添加映射路徑,我們攔截一切請求
        UrlBasedCorsConfigurationSource configSource = new UrlBasedCorsConfigurationSource();
        configSource.registerCorsConfiguration("/**", config);
 
        //3.返回新的CorsFilter.
        //return new CorsFilter(configSource);
 
        FilterRegistrationBean bean = new FilterRegistrationBean(new CorsFilter(configSource));
        bean.setOrder(0);
        return bean;
    }
}

跨域配置CorsFilter不生效原因

項目中有多個Filter時,需要通過 @Order(Ordered.HIGHEST_PRECEDENCE) 注解設置過濾器的執行順序

order的規則

1. order的值越小,優先級越高

2. order如果不標注數字,默認最低優先級,因為其默認值是int最大值

3. 該注解等同于實現Ordered接口getOrder方法,并返回數字。

如果使用如下注釋掉的方法進行設置跨域,Filter的doFilter()方法中直接return出去時,前端會提示跨域

因為這個CorsConfig并沒有實現Filter接口,即使加上 @Order 注解也不會生效,需要通過如下新的方式返回一個新的FilterRegistrationBean出去,并設置order

import com.nanase.takeshi.constants.JwtConstant;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.Ordered;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;
/**
 * CorsConfig
 * 跨域請求配置
 *
 * @author 725
 * @date 2020/12/10 18:17
 */
@Slf4j
@Configuration
public class CorsConfig {
    private CorsConfiguration buildConfig() {
        CorsConfiguration corsConfiguration = new CorsConfiguration();
        // 1 設置訪問源地址
        corsConfiguration.addAllowedOrigin("*");
        // 2 設置訪問源請求頭
        corsConfiguration.addAllowedHeader("*");
        // 3 設置訪問源請求方法
        corsConfiguration.addAllowedMethod("*");
        // 4 暴露哪些頭部信息
        corsConfiguration.addExposedHeader(JwtConstant.HEADER);
        return corsConfiguration;
    }
    /**
	@Bean
    public CorsFilter corsFilter() {
        log.info("跨域設置。。。。");
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        // 對接口配置跨域設置
        source.registerCorsConfiguration("/**", buildConfig());
        return new CorsFilter(source);
    }
    */
    
    @Bean
    public FilterRegistrationBean<CorsFilter> corsFilter() {
        log.info("跨域設置。。。。");
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        // 5 對接口配置跨域設置
        source.registerCorsConfiguration("/**", buildConfig());
        //有多個filter時此處設置改CorsFilter的優先執行順序
        FilterRegistrationBean<CorsFilter> bean = new FilterRegistrationBean<>(new CorsFilter(source));
        bean.setOrder(Ordered.HIGHEST_PRECEDENCE);
        return bean;
    }
}

感謝各位的閱讀,以上就是“怎么解決springboot設置CorsFilter跨域不生效問題”的內容了,經過本文的學習后,相信大家對怎么解決springboot設置CorsFilter跨域不生效問題這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

汉源县| 无极县| 哈尔滨市| 西城区| 商水县| 六盘水市| 抚州市| 巨野县| 田东县| 井研县| 疏勒县| 黄浦区| 阿巴嘎旗| 南涧| 和平区| 永宁县| 黄陵县| 阿巴嘎旗| 古田县| 新竹市| 邵阳县| 疏勒县| 浏阳市| 西充县| 盐城市| 大安市| 吉林市| 定西市| 阿拉善右旗| 凤台县| 北安市| 玉环县| 呼玛县| 新闻| 布拖县| 东兰县| 五大连池市| 怀远县| 崇信县| 蒙阴县| 台北市|