编程那点事编程那点事

专注编程入门及提高
探究程序员职业规划之道!

vue跨域proxyTable配置详解

先简单介绍下开发环境,后端使用的是JFinal开发的,当然也可以通过后端配置的方式解决跨域问题,个人感觉太麻烦,还是通过配置proxyTable的方式来吧。

网上的文章感觉讲解的不是很详细。

域名a:http://127.0.0.1:8088,这个是后端访问的域名,用来给前端提供接口的。

域名b:http://127.0.0.1:8089,这个是前端,也就是用vue开发的。

比如我的后端有一个这样的api,提供登录的,http://127.0.0.1:8088/login。

那我在配置proxyTable的时候是这样配置的

proxyTable: {
    '/api/*': {
        target: 'http://127.0.0.1:8088',
        changeOrigin: true,
        pathRewrite: {
            '^/api': ''
        }
    }
}

target配置的是后端域名,那么这里可能有人有疑问了,那么api是什么呢?我实在哪里配置的呢?

我在dev.env.js文件中,进行了如下的配置:

module.exports = merge(prodEnv, {
    NODE_ENV: '"development"',
    BASE_API: '"/api"',
})

大家看到了吧?我人为的在访问路径BASE_API前加了api,这样加上proxyTable上的配置就是,如果我前端项目的链接 http://127.0.0.1:8089/api/login,那么他就会帮我代理到 http://127.0.0.1:8088/login 上,这样就实现了跨域了,至于内部原理我这里没有研究。

至于api前缀是怎么加上去的?是我使用的axios框架的时候,进行了类似以下的全局配置,配置如下:

const service = axios.create({
    baseURL: process.env.BASE_API, // api 的 base_url
    timeout: 15000 // 请求超时时间
})

看到process.env.BASE_API了吧?这样在我通过axios框架进行访问api的时候,就自动给我加上api前缀了。

通过以上的讲解,大家应该明白了proxyTable怎么配置了吧?网上的所有文章都没有拿真实的域名来举例,所以大家可能看的比较模糊,我也是摸索和好长的时间,我想通过我的这篇文章,大家应该很明白了。

未经允许不得转载: 技术文章 » 前端开发 » vue跨域proxyTable配置详解