看了网上很多这方面的配置,一直都没成功,自己研究了下,然后测试,可以使用,所有进行记录下。
一:本地配置
修改vue.config.js配置文件,没有的话在根目录下 创建一个 vue.config.js文件,内容如下,如果需要添加或者删除的自行修改
'use strict'
module.exports = {
publicPath: "/",
outputDir: "dist",
assetsDir: "assets",
filenameHashing: false,
lintOnSave: process.env.NODE_ENV !== 'production',
productionSourceMap: false,
devServer: {
host: "0.0.0.0",//这里是本地打开的方式 localhost:自己打开, 0.0.0.0:自己打开,同时在局域网内,别人也能通过IP访问你的项目
port: 1888, // 端口号
https: false,
open: true, //配置自动启动浏览器
proxy: {
// 此处应该配置为开发服务器的后台地址
// 这里/api 自己任意填写
//但是需要和下面pathRewrite和 axios配置跨域需要一致,发布到线上的时候,nginx服务器需要一致
'/webapi': {
target: 'http://www.baidu/webapi', //接口API域名
changeOrigin: true, //是否跨域
pathRewrite: {
//这里'/webapi'和上面的 /webapi 一致,
//这里可以理解成用 '/webapi' 代替target里面的地址,比如我要调用'http://www.baidu/webapi/add',访问会变成'/webapi/add'
'^/webapi': ''
}
}
},
}
};2.修改 main.js
2.1:引入
import $axios from 'axios'
2.2:这里'/api'需要和config 中的 一致
//配置跨域 $axios.defaults.baseURL = '/webapi'; $axios.defaults.headers.post['Content-Type'] = 'application/json';
这时候 本地 跨域已经可以访问了,vue修改配置文件,记得需要重启下项目,不然不能生效
二:线上部署
如果在同域名下则不需要进行配置跨域
如果不在同域名下则需要进行配置下方
打包 build后上传线上服务器,这时候需要进行配置 nginx 服务的代理,
修改nginx.conf配置文件
#配置vue 线上部署 代理 #这里 /webapi 和vue.config.js 中的需要一致 #这里 proxy_pass 和 vue.config.js中的 target 要一样 #Content-Type 根据自己需求修改, 最好和 axios 中的一致
#服务器配置
server {
listen 80;
server_name localhost www.baidu,com;
client_max_body_size 10M;
client_body_buffer_size 128K;
#配置vue 线上部署 代理
location / {
try_files $uri $uri/ /index.html;
}
location /api {
proxy_pass http://localhost:8901/index.php;
add_header Content-Type "application/json;charset=utf-8";
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Access-Control-Allow-Methods' 'GET, POST';
}
}到这里,vue 的 本地和线上配置以及完成,可以正常访问了。
本文为Jsky原创文章,转载无需和我联系,但请注明来自Jsky博客 www.tjin.link
