【CV】Webpack5 配置跨域代理、WebSocket代理:ws

Webpack 一般的代理配置。
项目中用到了 WebSocket、与服务端对接时,需要联调代理。

一、Webpack5设置普通代理 和 WebSocket 代理

// webpack.config.js
const path = require('path');

devServer: {
	host:'localhost', // 指定要使用的 host。如果你想让你的服务器可以被外部访问。
	port: 8888, // 指定监听请求的端口号
	open: true, // 告诉 dev-server 在服务器已经启动后打开浏览器。true 以打开你的默认浏览器。
	compress: true, // 启用 gzip compression 压缩项目体积 [true, false]
	hot: true, // 启用 webpack 的 热模块替换 特性 [true, false]
	// 开启代理 
	// https://webpack.docschina.org/configuration/dev-server/#devserverproxy
	proxy: {
      '/api': 'http://xx.xx.xxx.xx:3000', 
      // 对 /api/users 的请求会将请求代理到 http://xx.xx.xxx.xx:3000/api/users
      "/api222": {
	      "target": "ws://xx.xx.xxx.xx:3000",
	      "ws": true, // 启用 ws 代理
	      // "secure": false 
	      // [secure] 默认为 true,将不接受在 HTTPS 上运行且证书无效的后端服务器。
	      // [secure] wss 可能需要设置成 false。
      },
      // 对 /api2/users 的WebSocket 请求会将请求代理到 ws://xx.xx.xxx.xx:3000/api222/users
	},
}

二、部分资料传送门

  1. Webpack5 - DevServerProxy: https://webpack.docschina.org/configuration/dev-server/#devserverproxy
  2. WebSocket:https://developer.mozilla.org/zh-CN/docs/Web/API/WebSocket
### Vue 项目中通过 Webpack `devServer` 配置解决方案 在 Vue CLI 中,可以通过配置 `devServer.proxy` 来实现开发环境下的请求处理。以下是详细的配置方法以及注意事项: #### 1. 基本概念 `devServer.proxy` 是 Webpack Dev Server 提供的一个功能,用于将某些 API 请求转发到目标服务器上,从而绕过浏览器的同源策略限制[^1]。 #### 2. 配置方式 在 Vue 项目的根目录下找到 `vue.config.js` 文件(如果没有则创建),并按照以下方式进行配置: ```javascript module.exports = { devServer: { proxy: { '/api': { // 这里的 /api 表示需要被代理的路径前缀 target: 'http://target-server.com', // 目标服务器地址 changeOrigin: true, // 是否改变请求头中的 host 字段为目标服务器地址 ws: false, // 是否启用 WebSocket 支持 pathRewrite: { '^/api': '' }, // 可选:重写 URL 的路径部分 secure: false // 如果是 HTTPS 地址,则需验证证书;设为 false 则忽略证书校验 } } } }; ``` 上述代码表示所有以 `/api` 开头的请求都会被代理到 `http://target-server.com` 上,并且会自动修改请求头中的 Host 字段为该目标服务器地址。 #### 3. 注意事项 - **接口地址书写形式** 接口请求地址应仅保留相对路径部分,例如 `/api/userInfo`,而不是完整的 IP 加端口号的形式(如 `http://localhost:8080/api/userInfo`)。如果写了完整地址,可能会导致代理失效[^2]。 - **Cookie 和 Session 处理** 当涉及 Cookie 或者 Session 数据传递时,确保目标服务器支持 CORS 并设置了正确的响应头字段(如 `Access-Control-Allow-Credentials: true`)。另外,在客户端发起 AJAX 请求时也需要开启 credentials 属性,例如使用 Axios 库时可以这样设置: ```javascript axios.defaults.withCredentials = true; ``` - **调试工具查看实际请求情况** 使用浏览器开发者工具或者 Postman 等工具观察最终发出的实际 HTTP 请求是否经过了代理转换。如果发现未走代理逻辑,请检查是否有其他插件拦截了网络流量或本地 hosts 文件冲突等问题。 #### 4. 示例场景说明 假设有一个后端服务运行于 `http://example-api.com` ,而前端应用启动在 `http://localhost:8081` 。此时如果不做任何特殊处理的话,默认情况下两者之间会产生问题。那么我们就可以利用上面提到的方法来解决问题——即让所有的 `/api/*` 类型的数据获取操作都经由这个中间层完成通信过程。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值