vue 跨域问题

时间:2022-07-26
本文章向大家介绍vue 跨域问题,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

1.1 开发环境

config/index.js 修改 proxyTable,高版本 vue-cli 的项目在 根目录/vue.config.js 中修改 proxy

1.1.1 proxyTable

proxyTable: {
  // 可以有多个
  '/api': {
    target: 'http://47.103.4.205:6666/',  // 目标接口域名, 注意加 http
    changeOrigin: true,  // 是否跨域
    pathRewrite: {
      // 这里理解成用 '/api' 代替 target 里面的地址,后面组件中我们掉接口时直接用 api 代替 
      // 比如我要调用 'http://47.103.4.205:6665/user/add',直接写 '/api/user/add' 即可
      '^/api': '/'
    }
  },
},

1.1.2 使用

// '/api' 不能忘,用它来匹配
// http://localhost/api/user/add 本地项目地址就转换成 http://47.103.4.205:6666/user/add
axios.get('/api/user/add').then(res => { 
	console.log(res)
})

1.2 生产环境

  将 vue 项目打包发布后,发现之前的代理配置失效了,这是因为 vue proxy 只能在开发环境使用(很蛋疼~),我们可以使用 nginx 在完成跨域。nginx 怎么安装就不再说了,直接上配置。

http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;

    keepalive_timeout  65;

    server {
        listen       80;
        server_name  localhost;

		# 这个是重点
		location /api {
            rewrite ^.+api/?(.*)$ /$1 break;
			proxy_pass http://47.103.4.205:6666/api;
        }
    }
}