一、安装Axios
npm i axios -S
封装一个请求工具:request.js
import axios from 'axios'// 创建可一个新的axios对象const request = axios.create({baseURL: 'http://localhost:9090', // 后端的接口地址ip:porttimeout: 30000})// request 拦截器// 可以自请求发送前对请求做一些处理// 比如统一加token,对请求参数统一加密request.interceptors.request.use(config => {config.headers['Content-Type'] = 'application/json;charset=utf-8';// let user = localStorage.getItem("user") ? JSON.parse(localStorage.getItem("user")) : null// config.headers['token'] = 'token'// 设置请求头return config}, error => {console.error('request error: ' + error) // for debugreturn Promise.reject(error)});// response 拦截器// 可以在接口响应后统一处理结果request.interceptors.response.use(response => {let res = response.data;// 兼容服务端返回的字符串数据if (typeof res === 'string') {res = res ? JSON.parse(res) : res}return res;},error => {console.error('response error: ' + error) // for debugreturn Promise.reject(error)})export default request
二、在main.js文件中,引入
import Vue from 'vue'import App from './App.vue'import router from './router'import ElementUI from 'element-ui';import 'element-ui/lib/theme-chalk/index.css';import request from "@/utils/request";Vue.config.productionTip = falseVue.use(ElementUI, { size: 'small' });Vue.prototype.$request=requestnew Vue({router,render: h => h(App)}).$mount('#app')
在vue 的 methods 中使用 :
或者直接在vue 中引用使用:
三、后端代码解决跨域问题
但是现在就运行程序则会报错
方法一:增加一个 CorsConfig 类
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;@Configurationpublic class CorsConfig {// 当前跨域请求最大有效时长。这里默认1天private static final long MAX_AGE = 24 * 60 * 60;@Beanpublic CorsFilter corsFilter() {UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();CorsConfiguration corsConfiguration = new CorsConfiguration();corsConfiguration.addAllowedOrigin("*"); // 1 设置访问源地址corsConfiguration.addAllowedHeader("*"); // 2 设置访问源请求头corsConfiguration.addAllowedMethod("*"); // 3 设置访问源请求方法corsConfiguration.setMaxAge(MAX_AGE);source.registerCorsConfiguration("/**", corsConfiguration); // 4 对接口配置跨域设置return new CorsFilter(source);}}
方法二:在controller层上加上@CrossOrigin 注解
两个方法任选其中一个就行。现在将前后端启动就可以进行数据交互了。