Loading

若依 - 前后端跨域问题(附上解决方案) - Gitee 解决方案

 

摘自:https://gitee.com/y_project/RuoYi-Vue/issues/I1HPKZ?_from=gitee_search

前后端跨域问题(附上解决方案)

 
 已完成
 张家伟  创建于 1月前
 

公司采取ruoyi-Vue 作为项目脚手架。
前端请求后台验证码接口,出现CORS跨域问题。
解决方案:
配置Spring CorsFilter,配置成功后,发现可以解决。

不过在请求其他接口后(即登录成功后,携带Token),仍旧出现跨域问题。

猜想: JWT的过滤器置于CrosFilter的靠前位置,导致还没有进行跨域处理,就已经开始解析token

解决方案: 调整 CrosFilter的位置,让其调整到JWTFilter前面

附上代码

CrosConfig.java

package com.ruoyi.framework.config;

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);
    }


}

SecurityConfig.java

// 注入 CrosFilter
@Autowired
private CorsFilter corsFilter.

// ... 中间代码省去
protected void configure(HttpSecurity httpSecurity) throws Exception
    {
// 前面代码省去
        // 添加JWT filter

        httpSecurity.addFilterBefore(authenticationTokenFilter, UsernamePasswordAuthenticationFilter.class);

// 新增代码:        
httpSecurity.addFilterBefore(corsFilter,JwtAuthenticationTokenFilter.class);
    }


1151004 y project 1578942802 fanxiaoqing-fan001 MoonLight-moonlight1995 433737 flycms 1 1578923736 小韦飞狼-xiaoweifeilang 5157458 skrbug 1578981397 共6人参与

 

posted @ 2020-06-19 13:39  Sam Xiao  阅读(6348)  评论(0编辑  收藏  举报