Vue配置代理解决跨越问题

本文介绍如何在Vue项目中配置代理,包括全局代理设置、按服务配置代理及使用pathRewrite属性进行路径重写的方法。

一、配置全局统一的代理

在vue工程的vue.config.js(如没有则新建该文件)文件下,添加如下配置:

module.exports = defineConfig({
    devServer: {
        proxy: 'https://emsrot.com/uat-ssd'
    }
})

表示所有的接口都代理到https://emsrot.com/uat-ssd/****

二、按照不同的服务配置不同的代理

module.exports = defineConfig({
    devServer: {
        proxy: {
            '/fileUpload': {
                target: 'https://emsrot.com/uat-ssd',
                secure: false,
                changeOrigin: true,
            },
            '/mobile': {
                target: 'https://emsrot.com/uat-mobile',
                secure: false,
                changeOrigin: true,
            }
        }
    }
})

表示所有 以/fileUpload 开头的接口将请求到 https://emsrot.com/uat-ssd/fileUpload/
所有 以/mobile 开头的接口将请求到 https://emsrot.com/uat-ssd/mobile/

三、增加 pathRwrite属性

module.exports = defineConfig({
    devServer: {
        proxy: {
            '/fileUpload': {
                target: 'https://emsrot.com/uat-ssd',
                secure: false,
                changeOrigin: true,
                pathRwrite: {
                    "^/fileUpload": '' // ^/fileUpload是正则
                },
            }
        }
    }
})

表示所有 以/fileUpload 开头的接口将请求到 https://emsrot.com/uat-ssd/****

Vue.js项目打包(通常使用Webpack或者其他构建工具)之前处理跨域问题,可以采取以下几种方法: 1. **配置服务器**: 如果你是后端开发者,可以在服务器端设置允许特定来源的跨域请求。例如,在Node.js的Express应用中,可以添加中间件如`cors`: ```javascript const express = require('express'); const cors = require('cors'); app.use(cors({ origin: 'http://your-domain.com', // 更改为你需要的源地址 credentials: true, })); ``` 2. **JSONP**: 对于只支持GET请求并且目标域名与当前域名相同的简单请求,可以尝试使用JSONP。 3. **代理** (Webpack dev server): 在Webpack的开发环境中,可以使用`proxy`选项来转发非同源请求到指定的服务器。例如,在`.webpack.dev.conf.js`文件中: ```javascript module.exports = { devServer: { proxy: { '/api': { target: 'https://api.example.com', changeOrigin: true, }, }, }, }; ``` 4. **CORS插件**: 使用像`axios`这样的库,你可以配置它在发送异步请求时自动处理CORS。比如: ```javascript axios.defaults.withCredentials = true; axios.interceptors.request.use(config => { if (process.env.NODE_ENV === 'development') { config.headers.common['X-Custom-Header'] = 'some-value'; } return config; }, error => Promise.reject(error)); ``` 5. **预设响应头**: 在服务端,设置Access-Control-Allow-Origin、Access-Control-Allow-Methods等HTTP头部,允许特定的跨域请求。 完成后记得检查浏览器的网络请求头是否包含正确的跨域信息。如果项目已经打包并部署,上述方法就无法直接用了,你需要在生产环境的服务器上配置
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值