vue.js

关注公众号 jb51net

关闭
首页 > 网络编程 > JavaScript > javascript类库 > vue.js > vite proxy跨域问题

关于vite proxy跨域问题的解决

作者:IICOOM

这篇文章主要介绍了关于vite proxy跨域问题的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

vite proxy如何解决跨域问题

场景描述

本地起了两个服务

1.前端vue项目跑在http://localhost:5173端口

2.后端接口服务跑在http://localhost:3000端口

前端项目请求后端接口时,浏览器给出了跨域的提示,接口请求失败。

下面给出通过配置前端代理解决跨域问题方法

如果你是vite搭建的vue3项目,找到vite.config.ts,添加下面内容:

export default defineConfig({
  server: {
    proxy: {
      '/api': {
        target: 'http://localhost:3000',
        changeOrigin: true,
        rewrite: (path) => path.replace(/^\/api/, ''),
      },
    }
  },
})

关键的点来了,你的前端发起请求的baseUrl应该是 http://localhost:5173/api

举个例子:

前端要请求后端http://localhost:3000/userlist 接口,那么你发起的请求应该是下面的样子:

http://localhost:5173/api/userlist

这样前端就是从相同的host 并且相同的port发起的请求,代理通过前缀"/api"匹配的你要转发的请求,转发到’http://localhost:3000’真正的后端服务,并且把多余的前缀给你替换掉。

vue3 vite3 解决复杂跨域

vue3在axios发送post请求时,容易遇到复杂跨域,会先发送options的预请求,再发送post请求,options请求搞了很久,无法被后端识别通过,只能想办法用proxy代理解决

vite.config.js中添加一下代码

export default defineConfig({
  plugins: [
    vue(),

  ],
  server: {
    host: '10.10.159.234',//本机ip
    port: 8080,
    //open: false, //自动打开 
    //base: "./ ", //生产环境路径
    proxy: {
      '/api': {
        target: 'http://10.56.33.13',	//实际请求地址
        changeOrigin: true,
        //rewrite: (path) => path.replace(/^\/api/, '')根据自己api情况选择这条
      },
    }
  }
});

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文