前后端分离实现跨域 springboot+vue

Flask+Vue快速打造个人网站() Flask+Vue快速打造个人网站() 记录一下起始日期2018/9/12/21:16 demo地址:宅神的生活 网站实现功能 作为练手项目,该项目主要练习前后端分离项目从开发到部署的流程 图片分类 图片展示 图片、视频后台上传 视频播放 前期准备 文件存储 :七牛云 用到的库 前端 后端 flask-admin 后台 flask-restful API Flask-logi... 阅读详情

原fetch方法直连后端(视频看到的,没验证过。嘻嘻!)
在这里插入图片描述

安装axios
新建utils文件夹,引入request.js文件
在这里插入图片描述

import axios from 'axios'

const request = axios.create({
  timeout: 5000
})

// request 拦截器
// 可以自请求发送前对请求做一些处理
// 比如统一加token,对请求参数统一加密
request.interceptors.request.use(config => {
  config.headers['Content-Type'] = 'application/json;charset=utf-8';

  if(config.params){
    let url = config.url + '?';
    for (const propName of Object.keys(config.params)) {
      const value = config.params[propName];
      var part = encodeURIComponent(propName) + "=";
      if (value !== null && typeof (value) !== "undefined") {
        if (typeof value === 'object') {
          for (const key of Object.keys(value)) {
            let params = propName + '[' + key + ']';
            var subPart = encodeURIComponent(params) + "=";
            url += subPart + encodeURIComponent(value[key]) + "&";
          }
        } else {
          url += part + encodeURIComponent(value) + "&";
        }
      }
    }
    url = url.slice(0, -1);
    config.params = {};
    config.url = url;
  }

  // config.headers['token'] = user.token;  // 设置请求头
  return config
}, error => {
  return Promise.reject(error)
});

// response 拦截器
// 可以在接口响应后统一处理结果
request.interceptors.response.use(
  response => {
    let res = response.data;
    // 如果是返回的文件
    if (response.config.responseType === 'blob') {
      return res
    }
    // 兼容服务端返回的字符串数据
    if (typeof res === 'string') {
      res = res ? JSON.parse(res) : res
    }
    return res;
  },
  error => {
    console.log('err' + error) // for debug
    return Promise.reject(error)
  }
)


export default request

在main.js中引用request
在这里插入图片描述
vue组件使用该request
在这里插入图片描述

安装axios
新建utils文件夹,引入request.js文件
在这里插入图片描述

import axios from 'axios'

const request = axios.create({
  timeout: 5000
})

// request 拦截器
// 可以自请求发送前对请求做一些处理
// 比如统一加token,对请求参数统一加密
request.interceptors.request.use(config => {
  config.headers['Content-Type'] = 'application/json;charset=utf-8';

  if(config.params){
    let url = config.url + '?';
    for (const propName of Object.keys(config.params)) {
      const value = config.params[propName];
      var part = encodeURIComponent(propName) + "=";
      if (value !== null && typeof (value) !== "undefined") {
        if (typeof value === 'object') {
          for (const key of Object.keys(value)) {
            let params = propName + '[' + key + ']';
            var subPart = encodeURIComponent(params) + "=";
            url += subPart + encodeURIComponent(value[key]) + "&";
          }
        } else {
          url += part + encodeURIComponent(value) + "&";
        }
      }
    }
    url = url.slice(0, -1);
    config.params = {};
    config.url = url;
  }

  // config.headers['token'] = user.token;  // 设置请求头
  return config
}, error => {
  return Promise.reject(error)
});

// response 拦截器
// 可以在接口响应后统一处理结果
request.interceptors.response.use(
  response => {
    let res = response.data;
    // 如果是返回的文件
    if (response.config.responseType === 'blob') {
      return res
    }
    // 兼容服务端返回的字符串数据
    if (typeof res === 'string') {
      res = res ? JSON.parse(res) : res
    }
    return res;
  },
  error => {
    console.log('err' + error) // for debug
    return Promise.reject(error)
  }
)


export default request

配置index.js实现跨域
在这里插入图片描述

'/api': {              //设置拦截器  拦截器格式   斜杠+拦截器名字,名字可以自己定
        target: 'http://localhost:8081',     //代理的目标地址
        changeOrigin: true,              //是否设置同源,输入是的
        pathRewrite: {                   //路径重写
          '^/api': ''                     //选择忽略拦截器里面的内容
        }
      }

新建对应的js文件用来存储方法
在这里插入图片描述
/api是固定前缀,在index.js设置了,得写,后边跟自己的路径

import request from "../utils/request";

export function getAllUser(param) {
  return request({
    url: '/api/mybatisPlus/page',
    method: 'get',
    params: param
  })
}

vue组件实现调用
在这里插入图片描述

在这里插入图片描述

Vue解决Axios问题 提前声明:本文只针对使用vue-cli创建的vue项目,范围仅限于vue2 ,指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器施加的安全限制 解决 话不多说,直接上代码: 在项目根目录创建 vue.config.js 文件,该文件与 src 同级 在 vue.config.js 文件中写下以下代码: module.exports = { devServer: { proxy: { '/api': { targe. 阅读详情

相关推荐

vuevue的创建、router,vuex,axios的安装使用

本文适合新手,介绍了vue的创建,router、axios、vuex的安装与基本使用

qq_43185247的博客 812

(springboot-vue) 前后端交互实现

一个例子 在vue写的前端创建用户 发送请求 后端springboot实现新用户的创建

qq_55054495的博客 3511

spring boot+spring data-jpa+Vue+swagger ui2+axios 实现前后端分离一套增删改查,分页+解决问题

今天整合了springboot+springdata-jpa+vue+swagger ui2+axios实现前后端分离写了一套增删改查,分页。希望可以给初学者一些帮助。 后端(idea中SpringBoot项目) SpringdatajpaApplication类 package com.changan.springdatajpa; import org.springframework....

小宋的博客 1751

Vue request请求配置

【代码】Vue request请求配置。

cleverlove77的博客 2267

springboot+Vue之模板前后端分离实现问题

Springboot+Vue前后端分离实现问题 在IDEA后端新建一个config-》CrosConfig 直接复制粘贴一下的代码: @Configuration public class CrosConfig implements WebMvcConfigurer { //解决问题 @Override public void addCorsMappings(CorsRegistry registry) { registry.addMappin...

JangKeo 404

vue+springboot前后端分离实现单点登录问题处理

最近在做一个后台管理系统,前端是用时下火热的vue.js,后台是基于springboot的。因为后台系统没有登录功能,但是公司要求统一登录,登录认证统一使用.net项目组的认证系统。那就意味着做单点登录咯,至于不知道什么是单点登录的同学,建议去找一下万能的度娘。 刚接到这个需求的时候,老夫心里便不屑的认为:区区登录何足挂齿,但是,开发的过程狠狠的打了我一巴掌(火辣辣的一巴掌)。。。,所以这次必须...

zhuguang10的博客 1222

[实战] springBoot + Vue 如何实现前后端分离请求?

Vue中, 我使用了被大家用烂了的 axios,为了实现请求,需要如下配置: 关于 withCredentials 的含义: 一下摘自 mozilla开发者中心 XMLHttpRequest.withCredentials 属性是一个Boolean类型,它指示了是否该使用类似cookies,authorization headers(头部授权)或者TLS客户端证书这一类资格证书来创建一个站点访问控制(cross-site Access-Control)请求。在同一个站点下使用withCrede.

Aran_的博客 397

vue+springboot前后端分离实现单点登录问题解决方法

最近在做一个后台管理系统,前端是用时下火热的vue.js,后台是基于springboot的。因为后台系统没有登录功能,但是公司要求统一登录,登录认证统一使用.net项目组的认证系统。那就意味着做单点登录咯,至于不知道什么是单点登录的同学,建议去找一下万能的度娘。 刚接到这个需求的时候,老夫心里便不屑的认为:区区登录何足挂齿,但是,开发的过程狠狠的打了我一巴掌(火辣辣的一巴掌)。。。,所以这次必须得好好记录一下这次教训,以免以后再踩这样的坑。 我面临的第一个问题是,浏览器控制台直接报CORS,以我多年

xuhaogang3的博客 3429

前后端分离】解决Vue2.0与Springboot实现前后台分离,session丢失问题_vue项目使用proxyTable处理,浏览器session失效的问题

#【前后端分离Vue2.0与Springboot实现前后台分离,session丢失问题_vue项目使用proxyTable处理,浏览器session失效的问题 如图所示,代码如下: module.exports = { devServer: { proxy: { ‘/front’: { target: ‘http://192.168.43.124:9999/’,//目标地址 ws: true, //// 是否启用websockets changeOrigin: true, //开启代理:在本地会创建

aaaaccccd的博客 658

vue 多个api请求_SpringBoot+Vue前后端分离实现请求api问题

前言最近过年在家无聊,刚好有大把时间学习Vue,顺便做了一个增删查改+关键字匹配+分页的小dome,可是使用Vue请求后端提供的Api的时候确发现一个大问题,前后端分离了,但是请求的时候也就必定会有这种问题,那如何解决呢?前端解决方案思路:由于Vue现在大多数项目但是用脚手架快速搭建的,所以我们可以直接在项目中创建一个vue.config.js的配置文件,然后在里面配置proxy代理来解决,话...

weixin_42154650的博客 671

springboot+springdata-jpa+vue+swagger ui2+axios实现前后端分离一套增删改查,分页+解决问题

今天整合了springboot+springdata-jpa+vue+swagger ui2+axios实现前后端分离写了一套增删改查,分页。希望可以给初学者一些帮助。* 后端(idea中SpringBoot项目) SpringBoot整合Swagger-ui 引入依赖 <dependency> <groupId>org.springframework.boo...

weixin_44591832的博客 564

vue前后分离session实现_前后端分离 vue+springboot session+cookie失效问题

环境:前端 vue ip地址:192.168.1.205后端 springboot2.0 ip地址:192.168.1.217主要开发后端。问题:首先登陆成功时将用户存在session中,后续请求在将用户从session中取出检查。后续请求取出的用户都为null。解决过程:首先发现sessionID不一致,导致每一次都是新的会话,当然不可能存在用户了。然后发现cookie浏览器不能自动保存,...

weixin_39620118的博客 667

真正实现前后端分离架构,通过SpringBoot整合Jpa做构建后端服务器,前端通过Vue结合Element-UI和axios进行数据请求,解决了请求问题、用户登录验证、百度地图根据坐标标记

真正实现前后端分离架构,通过SpringBoot整合Jpa做构建后端服务器,前端通过Vue结合Element-UI和axios进行数据请求,解决了请求问题、用户登录验证、百度地图根据坐标标记。 附有完整源码,下载地址见文末。 一、后端实现 采用 idea 作为编译器,构建maven项目。只需要简单配置数据库的用户帐号、密码、数据库名称即可。不需要额外的Tomcat,可以直接运行,项目运行之...

代码讲故事 1167

vue+SpringBoot+shrio(实现前后端分离,拦截器功能,解决)

shiro权限配置 package com.cdz.demo0216yiguo.config; import com.cdz.demo0216yiguo.realm.UserRealm; import org.apache.shiro.authc.credential.HashedCredentialsMatcher; import org.apache.shiro.cache.ehcach...

CDZAllier的博客 1857
上一篇: SimpleDateFormat得到String类型的时间转换为Date类型
下一篇: 周阳老师springcloud学习总结
YH_Nothing
博客等级 码龄7年 0粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值