vue.config.js 配置代理,解决跨域

为什么要配置代理?

因为有跨域问题,要使用代理服务器发送请求。

比如:https://ynuf.aliapp.org/service/um.json?_bx-v=2.0.31 这个接口.

本地 http://localhost:8080/向它发送请求,就会发生跨域所以要把本地请求代理到https://ynuf.aliapp.org

配置代理前,访问结果是

在这里插入图片描述
在这里插入图片描述

如何配置

使用vue.config.js 进行配置

vue.config.js

module.exports = {
  devServer: {
    proxy: {
      '/api': { //访问 /api 接口的都会被代理到下面的域名上
        target: 'https://ynuf.aliapp.org',  //目标url
        changeOrigin: true, // 是否改变域名
        ws: true,
        pathRewrite: {
          // 路径重写
          '^/api': '', // 这个意思就是以api开头的,会把api去掉,再接上后面的字段
        },
      },
    },
  },
};

使用axios发送请求
在这里插入图片描述

代理之后

在这里插入图片描述

有一点点问题,pathRewrite的配置没有生效,待解决

### vue.config.js配置 devServer proxy 解决问题 在前端开发过程中,当遇到前后端分离的情况时,通常会出现问题。Vue CLI 提供了一种简单的方式来通过 `vue.config.js` 文件中的 `devServer.proxy` 属性来解决这一问题。 以下是详细的配置说明: #### 基本配置结构 在 `vue.config.js` 文件中定义 `devServer.proxy` 的基本形式如下: ```javascript module.exports = { devServer: { proxy: { '/api': { // 这里的 /api 是请求前缀,可以根据实际需求修改 target: 'http://localhost:5100', // 后端接口的实际地址 changeOrigin: true, // 是否改变源,默认为 false pathRewrite: { '^/api': '' } // 路径重写规则 } } } }; ``` #### 参数详解 1. **`target`**: 定义目标服务器的 URL 地址。例如,在上述例子中,所有的 `/api` 请求都会被转发到 `http://localhost:5100`[^2]。 2. **`changeOrigin`**: 设置为 `true` 表示允许更改请求头部的 Host 字段为目标服务器的名。这对于处理某些后端服务的身份验证或权限校验非常重要[^3]。 3. **`pathRewrite`**: 使用正则表达式对路径进行重写。例如,将 `/api/home/data` 改写为 `/home/data`。这一步可以去掉多余的前缀以便于适配后端 API 接口的设计[^2]。 4. **其他可选参数**: - **`secure`**: 默认值为 `false`,表示即使目标服务器使用 HTTPS 协议也不会强制验证证书的有效性。 - **`logLevel`**: 控制日志级别,用于调试代理行为。 - **`bypass`**: 自定义函数实现特定条件下的绕过逻辑。 #### 实际案例分析 假设当前项目的后端运行在一个独立的服务上(如 IP 地址为 `172.16.xxx.xxx`, 端口号为 `8085`),而前端应用启动在默认的 `localhost:8080` 下,则可以通过以下方式完成代理配置: ```javascript const { defineConfig } = require('@vue/cli-service'); module.exports = defineConfig({ devServer: { port: 8080, proxy: { '/api': { target: 'http://172.16.xxx.xxx:8085', changeOrigin: true, pathRewrite: { '^/api': '/' }, }, }, }, }); ``` 在此情况下,任何以 `/api` 开头的请求都将自动转发至指定的目标服务器,并且客户端无需关心具体的主机名和端口信息[^3]。 --- ### Axios 配合使用 为了进一步简化代码编写过程,可以在项目初始化阶段全局设置 Axios 的基础路径 (`baseURL`) 或者直接利用代理机制调整请求地址。例如: ```javascript import axios from 'axios'; // 不再需要硬编码完整的 URL axios.get('/api/home/data').then(response => console.log(response.data)); ``` 此时发送出去的真实 HTTP 请求会被映射到对应的后台服务上去执行[^2]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值