Vue3 使用 axios 实现跨域
Vue3 使用 axios 可以实现请求跨域问题
1.安装axios
npm install axios -S
2.引入axios 并配置为全局 $axios 对象
main.js
import { createApp } from 'vue'
import App from './App.vue'
import axios from 'axios'
//createApp(App).mount('#app')
const app = createApp(App)
app.config.globalProperties.$axios = axios
app.mount('#app')
2. 配置转发
下面代码是 将 127.0.0.1 的 8080端口 中凡是 含有 /sina 的地址 转发至 http://192.168.1.31:80/ 下
其中 /sina 不改变,只改变IP和端口
vue.config.js
const { defineConfig } = require('@vue/cli-service')
module.exports = defineConfig({
transpileDependencies: true,
//-----------------------Axios跨域请求-----------------------------------------
devServer:{
port:8080,//vue网页访问的端口
host:"127.0.0.1",//vue网页访问的地址
https:false,
open:false,
proxy: {
'/sina': { //为用于替换的的标识字符串
target: 'http://192.168.1.31:80/',//Axios跨域请求的IP
changeOrigin: true,
ws: true,
pathRewrite: {
'^/sina': '' //不改变
}
},
/* 可以同步配置多个转发目标
'/phpUrl': { //为用于替换的的标识字符串
target: 'http://192.168.1.8:8080/VueApi',//Axios跨域请求的IP
changeOrigin: true,
ws: true,
pathRewrite: {
'^/phpUrl': '' //不用改
}
} */
}
}
//----------------------------------------------------------------------------
})
调用方式
其中地址 /sina/api/sessions 转发前 实际请求地址是 http://127.0.0.1:8080/sina/api/sessions
因为地址中 含有 /sina 符合转发条件 因此 axios 进行转发
转发后 实际请求地址是 http://192.168.1.31:80/sina/api/sessions
这样就实现了用 axios 进行 跨域转发
且可以实现 当地址中不含 /sina 时正常请求,不进行转发
//axios 请求并 进行转发 ------------------------------------------------- //参数 var params=new URLSearchParams(); params.append('login',"admin"); params.append('password',"admin"); /**/ this.$axios.post('/sina/api/sessions', params) .then(response => { // 处理响应数据 console.log(response.data); this.current_call_token= response.data.token; console.log(this.current_call_token); }) .catch(error => { // 处理请求错误 console.log(error); });