众所周知,咱们在作先后端分离项目的时候,常常须要在本地起前端工程,接口但愿拉取服务端的实际数据而不是本地的mock数据,而若是本地程序直接访问远程接口, 确定会遇到跨域问题。css
这里我就不详细介绍了,你们自行百度哈html
通常来说,先后端分离的项目在大公司都会由后台设置容许跨域访问,由于后台设置容许跨域是很简单和方便的,可是某些状况下,一些小公司或者你工做的场所后台不怎么配合的状况下,这就须要前端来配置跨域请求来方便咱们使用接口前端
以vue-cli搭建的项目为例, 在webpack配置文件 /config/index.js, 因为咱们是在开发环境下使用,天然而然是要配置在dev里面,找到 proxyTable属性,配置以下:vue
dev: {
// Paths
assetsSubDirectory: 'static',
assetsPublicPath: '/',
<!-- 使用proxyTable进行跨域设置 -->
proxyTable: {
'/api': {
target: 'http://www.abc.com', // 设置你调用的接口域名和端口号, 别忘了加http
changeOrigin: true, // 是否跨域
pathRewrite: {
// 这里理解成用'/api'代替target里面的地址,后面组件中咱们掉接口时直接用api代替
// 好比我要调用'http://www.abc.com/user/add',直接写'/api/user/add'便可' '^/api': '/' } } }, // Various Dev Server settings host: '0.0.0.0', // can be overwritten by process.env.HOST port: 8080, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined autoOpenBrowser: false, errorOverlay: true, notifyOnErrors: true, poll: false, // https://webpack.js.org/configuration/dev-server/#devserver-watchoptions- /** * Source Maps */ // https://webpack.js.org/configuration/devtool/#development devtool: 'cheap-module-eval-source-map', // If you have problems debugging vue-files in devtools, // set this to false - it *may* help // https://vue-loader.vuejs.org/en/options.html#cachebusting cacheBusting: true, cssSourceMap: true }, 复制代码
上面proxyTable属性中的配置,效果就是将本地8080端口的一个请求代理到了http://www.abc.com这个域名下node
'http://localhost:8080/api' ===> 'http://www.abc.com/'
复制代码
注意: 以上设置只能在开发环境下使用,打包后会出现路径问题的webpack
注意: Vue-cli提供的代理功能,只是让你在开发环境下使用的,它(http-server-middleware)依赖于node环境,生产代码应该使用npm run build而后把dist放到nginx服务器上,在nginx上配置代理地址nginx
这还没完,如今咱们要将项目部署到nginx上,此时原来能够访问的接口又访问不到了,因此这个时候还要对nginx进行设置。web
config文件下的index.js文件找到build属性
assetsPublicPath: '/' =>>>>> assetsPublicPath: './'
复制代码
build文件下的untils文件中找到vue-style-loader
增长 publicPath: '../../'
复制代码
这时候的静态资源均可以被加载出来,且不会报错,可是api访问的话仍是会报错
复制代码
打开html文件清空里面的内容,将复制的内容粘贴进去
复制代码
location /api {
proxy_pass http://localhost:4000/;
}
复制代码
你要访问那个地址这里就修改成你要访问的那个地址
复制代码
注意: 修改完nginx中的配置必定要重启nginx才能够, 切记!!!vue-cli
nginx.exe -s stop // stop是快速中止nginx,可能并不保存相关信息
nginx.exe -s quit // quit是完整有序的中止nginx,并保存相关信息
nginx.exe -s reload // 当配置信息修改,须要从新载入这些配置时使用此命令
nginx.exe -s reopen // 从新打开日志文件
nginx -v // 查看Nginx版本
复制代码
以上就是我在项目中使用的配置啦,还有一些更高级的配置尚未接触使用到,供你们参考npm