前后端分离Demo

1. 前端代码:

    1.1 main.js

// 引用axios,并设置基础URL为后端服务api地址
//var axios = require('axios');
axios.defaults.baseURL = 'http://localhost:2000/cc';   //注意有没s,不然会报错
//对应后端网关统一地址
//axios.defaults.baseURL = ' https://www.easy-mock.com/mock/5d3e8263c3776b0913c49b88/demo '//easy mock对应后端网关统一地址
// API方法绑定到全局  /plat/login
Vue.prototype.$http = axios     //调用的时候可以直接使用this.$http 来指代 axios
//用来判断session里面有没user,然后跳路径
router.beforeEach((to, from, next) => {
  //NProgress.start();
  if (to.path == '/login') {
    sessionStorage.removeItem('user');
  }
  let user = JSON.parse(sessionStorage.getItem('user'));
  if (!user && to.path != '/login') {
    next({ path: '/login' })
  } else {
    next()
  }
})

1.2 Login.vue

this.$http.post('/plat/login',loginParams)   //这个是访问后台的,plat是后台网关配置的前缀
      .then(data=>{
          this.logining=false;
          console.debug(data);
          this.logining = false;
          //NProgress.done();
          let {success,message,restObj,errorCode}= data.data;   //后台返回的json数据格式,restObj要有对象,不然前台的session没有对象会一直跳login界面
          if (!success) {
              this.$message({  //this当前的vue对象,
                  message: message,
                  type: 'error'
              });
          } else {
              sessionStorage.setItem('user', JSON.stringify(restObj));
              this.$router.push({ path: '/table' });
          }
      })
      /*.catch(error=>{
          console.debug(error);
      })*/
} else {
  console.log('error submit!!');
  return false;
}

 

注:config的index.js可以配置ip

2.后台配置跨域器,cors的跨域解决方案

    2.1zuul网关中配置GlobalCorsConfig类

542996f892fd3349afa1f367b9f3a8e7480.jpg

2.2 GlobalCorsConfig类

@Configuration
public class GlobalCorsConfig {
    @Bean
    public CorsFilter corsFilter() {
        //1.添加CORS配置信息
        CorsConfiguration config = new CorsConfiguration();
        //1) 允许的域,不要写*,否则cookie就无法使用了
        config.addAllowedOrigin("http://127.0.0.1:8080");
        config.addAllowedOrigin("http://localhost:8080");
        //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);
    }
}

    

转载于:https://my.oschina.net/u/4083694/blog/3081040

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值