解决vue中使用proxy配置不同端口和ip接口问题
文件大小: 52k
源码售价: 10 个金币 积分规则     积分充值
资源说明:问题描述:   使用vue-cli创建的项目,开发地址是localhost:8080,由于后台开发不同的模块,导致每个模块请求的ip和端口号不一致   例如:http://192.168.10.22:8081  或者 http://192.168.10.30:9999等 解决问题:   在vue.config.js中配置不同的端口号   module.exports = { publicPath: process.env.NODE_ENV === 'production' ? './' : '/', devServer: { open: true, proxy: { 在Vue.js开发过程中,我们经常会遇到前后端分离的情况,此时前端和后端的开发环境可能在不同的IP和端口上。Vue CLI创建的项目默认运行在`localhost:8080`,但后端API接口可能分布在多个IP和端口上,这就会导致跨域问题。为了解决这个问题,我们可以利用Vue CLI的配置文件`vue.config.js`中的`devServer.proxy`选项来设置代理。 打开`vue.config.js`文件,如果没有这个文件,可以在项目的根目录下创建它。然后添加以下配置: ```javascript module.exports = { publicPath: process.env.NODE_ENV === 'production' ? './' : '/', devServer: { open: true, proxy: { '/api1': { target: 'http://192.168.10.22:8081', changeOrigin: true, // 允许跨域 pathRewrite: { '^/api1': '', // 将/api1前缀重写为空 }, ws: false, // 是否启用websockets }, '/api2': { target: 'http://192.168.10.30:9999', changeOrigin: true, pathRewrite: { '^/api2': '', // 将/api2前缀重写为空 }, ws: false, }, }, }, }; ``` 在这个例子中,我们设置了两个代理规则:'/api1' 和 '/api2',分别对应不同的后端服务。当你在前端发起如`/api1/some-endpoint`或`/api2/another-endpoint`的请求时,Vue CLI的开发服务器会自动将这些请求转发到对应的后端服务器,从而解决跨域问题。 然而,如果项目中有多个模块,每个模块请求的IP和端口都不同,那么保持`vue.config.js`中的代理配置可配置化就显得很重要。这里有两个思路: **思路一**: 尝试在`public`目录下创建一个JSON文件,存储所有的接口地址配置,然后在Vue组件中读取这个JSON文件。但这种方法可能会遇到静态资源路径解析的问题,导致JSON文件无法正确加载。 **思路二**: 在`public`目录下创建一个JS文件,将所有接口地址挂在`window`对象上,然后在HTML的`index.html`文件中引入这个JS文件。这样,后端开发者可以修改这个JS文件中的URL,而不会影响前端的打包。例如: 在`public/js/apiConfig.js`中: ```javascript window.serverUrls = { publicSentiment: 'http://192.168.10.22:8081', monitor: 'http://192.168.70.6:9999', }; ``` 在`public/index.html`中: ```html ``` 然后在Vue组件中使用这些URL: ```javascript export const getDictionary = (params) => { return _axios({ url: `${window.serverUrls.monitor}/keypersonnel/getDictionaryForType`, method: 'post', data: params, }); }; ``` 这种方式可以让前端代码与具体的接口地址解耦,后端只需要更新`apiConfig.js`文件,无需频繁地重新打包前端应用。 需要注意的是,以上代理配置仅在开发环境中生效。当项目部署到生产环境时,需要确保服务器配置了CORS(跨源资源共享)或者通过反向代理服务器将API请求转发到正确的后端服务。对于生产环境,通常不会存在跨域问题,因为前端和后端通常部署在同一域名下。如果仍有跨域问题,需要咨询后端团队,调整服务器配置。 总结来说,解决Vue项目中跨域问题的关键在于理解并正确使用`devServer.proxy`配置,以及在项目结构中设计灵活的接口地址管理策略。通过这些方法,你可以轻松应对多后端服务的开发需求,同时减少因接口变动带来的不必要的开发工作。
本源码包内暂不包含可直接显示的源代码文件,请下载源码包。