返回顶部
首页 > 资讯 > 前端开发 > JavaScript >Vue3跨域解决方案实例详解
  • 645
分享到

Vue3跨域解决方案实例详解

Vue3跨域解决方案Vue3跨域Vue跨域vue项目配置代理 2023-01-28 06:01:58 645人浏览 独家记忆
摘要

Vue项目配置代理 vue.config.js const { defineConfig } = require('@vue/cli-service') module.exports

Vue项目配置代理

vue.config.js

const { defineConfig } = require('@vue/cli-service')
module.exports = defineConfig({
  transpileDependencies: true,
  devServer:{
    proxy:{
        '/api':{
            target: 'Http://xx.xx.xxx.xx',
            changeOrigin:true,
            pathRewrite: {
                '^/api': ''
            }
        }
    }
 
}
})

如果是用vue3+ts则在vue.config.ts中添加以下代码:

  server: {
// 跨域的写法
    proxy: {
      '/api': {
        target: 'http://nvzu.xxx.cn/', // 实际请求地址
        changeOrigin: true,
        rewrite: (path) => path.replace(/^\/api/, ""),
      },
    },
  },
// 不跨域的写法

axiOS.js


"use strict";
 
import axios from "axios";
 
// Full config:  https://GitHub.com/axios/axios#request-config
axios.defaults.baseURL = '/api' || '';
// axios.defaults.headers.common['Authorization'] = AUTH_TOKEN;
// axios.defaults.headers.post['Content-Type'] = 'application/x-www-fORM-urlencoded';
 
let config = {
// 这里的api就是获取configJS中的地址
  baseURL: '/api'
  // timeout: 60 * 1000, // Timeout
  // withCredentials: true, // Check cross-site Access-Control
};
 
const _axios = axios.create(config);
 
_axios.interceptors.request.use(
  function(config) {
    // Do something before request is sent
    return config;
  },
  function(error) {
    // Do something with request error
    return Promise.reject(error);
  }
);
 
// Add a response interceptor
_axios.interceptors.response.use(
  function(response) {
    // Do something with response data
    return response;
  },
  function(error) {
    // Do something with response error
    return Promise.reject(error);
  }
);
export default{
  install:function(app){
    app.config.globalProperties.axios = _axios;
    app.config.globalProperties.$translate = (key) =>{
      return key
    }
  }
}

页面使用proxy.axios.get/post进行获取跨域接口

<template>
  <div class="home">
    <img alt="Vue loGo" src="../assets/logo.png">
    <HelloWorld msg="Welcome to Your vue.js App"/>
  </div>
</template>
 
<script>
import {getCurrentInstance} from 'vue'  // 引入Vue3中的getCurrentInstance
// @ is an alias to /src
import HelloWorld from '@/components/HelloWorld.vue'
 
export default {
  name: 'HomeView',
  mounted(){
    const {proxy} = getCurrentInstance();
    console.log(proxy);
    // Axios.get
    proxy.axios.get('/index_category/data').then((e)=>{
      console.log(e);
    })
  },
  components: {
    HelloWorld
  }
}
</script>

到此这篇关于Vue3跨域解决方案实例详解的文章就介绍到这了,更多相关Vue3跨域解决方案内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Vue3跨域解决方案实例详解

本文链接: https://lsjlt.com/news/178389.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作