You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Webpack Dev Server代理配置遇CORS问题,求排查原因

问题原因及解决办法

核心问题

你配置了webpack devServer的代理,但前端代码直接请求了https://www.youtube.com的完整地址,没走本地代理服务器,浏览器直接向youtube发起跨域请求,而youtube服务器没有允许http://localhost:9000的跨域访问,所以触发CORS错误。

解决步骤

方法一:使用相对路径请求

把前端的fetch请求改成相对路径,让请求先发给本地devServer,再由代理转发到youtube:

fetch("/watch?v=fJ9rUzIMcZQ");

此时请求会发送到http://localhost:9000/watch?v=fJ9rUzIMcZQ,devServer会自动将其转发到配置的https://www.youtube.com目标地址。

方法二:配置更明确的代理规则(可选)

如果需要区分多个代理目标,可以细化proxy配置,避免路径冲突:

devServer: {
  port: 9000,
  hot: true,
  proxy: {
    '/youtube': {
      target: 'https://www.youtube.com',
      pathRewrite: {'^/youtube': ''}, // 去掉路径中的/youtube前缀
      changeOrigin: true // 修改请求头中的Origin为目标域名,避免被目标服务器拦截
    }
  }
}

对应前端请求改为:

fetch("/youtube/watch?v=fJ9rUzIMcZQ");

补充说明

CORS是浏览器的安全机制,当前端页面和请求目标域名不同时,浏览器会检查目标服务器返回的Access-Control-Allow-Origin头是否包含当前页面的Origin。通过devServer代理时,请求是从本地服务器(和前端同源)发送到目标服务器,浏览器只会校验前端和本地服务器的同源性,不会触发跨域检查。

内容的提问来源于stack exchange,提问作者Eugenie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 14:30:54