亮神知识库 亮神知识库
首页
  • 手写代码

    • 手写代码系列
  • 基础知识

    • 基础
    • JS底层
    • CSS
  • 原理
  • 浏览器
  • HTTP
  • 网络安全
  • babel
  • webpack基础
  • webpack进阶
  • Vite
  • TypeScript
  • Vue2
  • Vue3
  • Node基础

    • glob
    • 模块化机制
    • 事件循环
    • KOA2框架原理
    • Node子进程
    • cluster原理(了解)
  • 教育行业2021

    • B端
    • C端
    • 工具
  • 游戏行业2025
  • 刷题
  • 杂(待整理)
  • 学习
  • 面试
  • 实用技巧
  • 心情杂货
  • 年度总结
  • 友情链接
关于
  • 分类
  • 标签
  • 归档
  • 收藏
GitHub (opens new window)

亮神

前程明亮,未来可期
首页
  • 手写代码

    • 手写代码系列
  • 基础知识

    • 基础
    • JS底层
    • CSS
  • 原理
  • 浏览器
  • HTTP
  • 网络安全
  • babel
  • webpack基础
  • webpack进阶
  • Vite
  • TypeScript
  • Vue2
  • Vue3
  • Node基础

    • glob
    • 模块化机制
    • 事件循环
    • KOA2框架原理
    • Node子进程
    • cluster原理(了解)
  • 教育行业2021

    • B端
    • C端
    • 工具
  • 游戏行业2025
  • 刷题
  • 杂(待整理)
  • 学习
  • 面试
  • 实用技巧
  • 心情杂货
  • 年度总结
  • 友情链接
关于
  • 分类
  • 标签
  • 归档
  • 收藏
GitHub (opens new window)
  • babel

  • webpack基础

  • webpack深入

    • 源码深入
    • 手写简易webpack
    • webpack-loader机制
    • webpack插件机制
    • webpack模块加载原理
    • 懒加载(未完全理解)
    • 热更新原理
    • webpack proxy原理
      • webpack proxy原理
      • 跨域
      • 总结
  • Vite

  • TypeScript

  • 打包工具
  • webpack深入
0zcl
2021-12-18
目录

webpack proxy原理

# webpack proxy原理

在开发阶段, <code>webpack-dev-server</code> 会启动一个本地服务器,运行在 localhost 的一个端口上,而后端服务又是运行在另外一个IP地址上。由于浏览器同源的限制,本地localhost请求后端服务,会出现跨域。为了解决跨域,devServer使用了参数proxy代理来解决。proxy的原理是:利用了http-proxy-middleware这个http代理中间件,在浏览器与服务端中添加一个代理。

const express = require('express');
const { createProxyMiddleware } = require('http-proxy-middleware');

const app = express();
app.use('/api', createProxyMiddleware({ target: 'http://www.example.org', changeOrigin: true }));
app.listen(4000)
// 本地地址为http://localhost:4000/api/foo/bar -> http://www.example.org/api/foo/bar
// 该浏览器发送一个前缀带有/api标识的请求转发代理服务器,代理服务器转发到 www.example.org 服务器
1
2
3
4
5
6
7
8

# 跨域

当本地发送请求的时候,代理服务器响应该请求,并将请求转发到目标服务器,目标服务器响应数据后再将数据返回给代理服务器,最终再由代理服务器将数据响应给本地

proxy

  • 代理服务器传递数据给本地浏览器的过程中,两者同源,并不存在跨域行为,这时候浏览器就能正常接收数据
  • 服务器与服务器之间请求数据并不会存在跨域行为,跨域行为是浏览器安全策略限制

# 总结

在开发阶段, <code>webpack-dev-server</code> 会启动一个本地服务器,运行在本地 localhost 的一个端口上,而后端服务又是运行在另外一个IP地址上。由于浏览器同源的限制,本地localhost请求后端服务,会出现跨域。为了解决跨域,devServer使用了参数proxy代理来解决。proxy的原理是:利用了http-proxy-middleware这个http代理中间件,在浏览器与服务端中添加一个代理。

面试官:说说webpack proxy工作原理?为什么能解决跨域? (opens new window) webpack proxy 原理 (opens new window)

编辑 (opens new window)
上次更新: 2025/07/20, 06:21:22
热更新原理
源码

← 热更新原理 源码→

最近更新
01
2024年
07-20
02
2023年
07-20
03
2022年
07-20
更多文章>
Theme by Vdoing | Copyright © 2025-2025 亮神 | MIT License | 桂ICP备2024034950号 | 桂公网安备45142202000030
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式