首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >webpack-dev-server代理后端一直报CORS跨域或500错误

webpack-dev-server代理后端一直报CORS跨域或500错误

作者头像
人人都是码农
发布于 2025-05-12 07:10:01
发布于 2025-05-12 07:10:01
9500
代码可运行
举报
运行总次数:0
代码可运行

本地运行vue项目,打包工具是webpack,后端接口已经部署到开发域名上,接口用postman请求没问题,但是在项目中代理接口后运行就一直报500错误,报错信息如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Uncaught runtime errors:

ERROR
Request failed with status code 500
    at createError (webpack-internal:///./node_modules/axios/lib/core/createError.js:16:15)
    at settle (webpack-internal:///./node_modules/axios/lib/core/settle.js:17:12)
    at XMLHttpRequest.handleLoad (webpack-internal:///./node_modules/axios/lib/adapters/xhr.js:61:7)

vue.config.js中的代理配置:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 开发代理配置
devServer: {
    proxy: {
        '^/api/': {
            target: 'http://cafe123.cn',
            changeOrigin: true
        }
    }
}

探索原因

开始一直以为是devServer代理配置或者axios哪的问题,代理肯定是成功了的,因为500错误本身就是服务器返回的,然后各种调试axios都无效。

直接弃用devServer代理,换成whistle在浏览器上来转发代理接口,服务器上依然返回500错误。postman中请求没问题的cURL:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
curl --location --request POST 'https://cafe123.cn/api/login' \
--header 'Content-Type: application/json' \
--data-raw '{
    "account": "admin",
    "password": "1345102704"
}'

然后直接复制出来浏览器中的请求cURL,放到postman中发送请求,发现浏览器加了很多请求头,然后再一个请求头一个请求头测试,最终发现原因在Origin请求头上。

解决办法

找到问题的原因就好办了,origin请求头有问题,那就直接改它,方式也有下面两种:

1、在devServer代理中添加Origin请求头

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 开发代理配置
devServer: {
    proxy: {
        '^/api/': {
            target: 'http://cafe123.cn',
            changeOrigin: true,
            headers: {
                Origin: 'http://cafe123.cn'
            }
        }
    }
}

2、直接去掉请求中的Origin请求头

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 开发代理配置
devServer: {
    proxy: {
        '^/api/': {
            target: 'http://cafe123.cn',
            changeOrigin: true,
            router: function(request) {
                delete request.headers.origin
            },
        }
    }
}

http的origin请求头

请求头 Origin 表示请求的来源(协议、主机、端口)。如果一个用户代理需要请求一个页面中包含的资源,或者执行脚本中的 HTTP 请求(fetch),那么该页面的来源(origin)就可能被包含在这次请求中,浏览器中请求会出现 Origin 请求头的2种情形:

  • • 跨源请求
  • • 除 GET 和 HEAD 以外的同源请求(即它会被添加到同源的 POST、OPTIONS、PUT、PATCH 和 DELETE 请求中)

devServer的changeOrigin配置

changeOrigin: true/false, Default: false - changes the origin of the host header to the target URL。

changeOrigin是用来将host请求头修改为target的URL,注意这里修改的并不是origin header,这个配置实际跟解决跨域问题没啥关系。

参考文档

  • • webpack devServer.headers[1]
  • • HTTP Headers Origin[2]
引用链接

[1] webpack devServer.headers: https://webpack.js.org/configuration/dev-server/#devserverheaders [2] HTTP Headers Origin: https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Reference/Headers/Origin

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-05-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 秘密菜单 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
webpack-dev-server代理后端一直报CORS跨域或500错误
本地运行vue项目,打包工具是webpack,后端接口已经部署到开发域名上,接口用postman请求没问题,但是在项目中代理接口后运行就一直报500错误,报错信息如下:
人人都是码农
2025/05/10
1790
webpack代理proxy配置
前端项目开发中我们经常会用到 proxy 代理来解决接口跨域问题,通常是在 webpack.config.js 或 vue.config.js 或 vite.config.js 中配置:
人人都是码农
2023/11/16
1.1K0
5-4 使用 webpack-dev-server 实现请求转发
请求转发,其实是使用 webpack-dev-server 的代理功能来实现的,本节为大家介绍 webpack-dev-server 的代理功能和主要使用场景。
love丁酥酥
2020/05/09
2.6K0
5-4 使用 webpack-dev-server 实现请求转发
前端开发本地代理详解:根据不同环境自动设置请求地址和接口代理
一般开发项目除了正式的生产环境,还会有对应的开发环境、测试环境和预发布环境,每个环境所访问的接口地址肯定不一样,如果自己一个个手动修改那就太不程序猿了。
人人都是码农
2023/11/17
2.4K0
前端开发本地代理详解:根据不同环境自动设置请求地址和接口代理
面试官:跨域是什么?Vue项目中你是如何解决跨域的呢?
同源策略(Sameoriginpolicy),是一种约定,它是浏览器最核心也最基本的安全功能
@超人
2021/02/26
1.7K0
面试官:跨域是什么?Vue项目中你是如何解决跨域的呢?
什么是跨域跨域解决方法_500错误原因解决方法
出于浏览器的同源策略限制。同源策略(Sameoriginpolicy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说Web是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现。同源策略会阻止一个域的javascript脚本和另外一个域的内容进行交互。所谓同源(即指在同一个域)就是两个页面具有相同的协议(protocol),主机(host)和端口号(port)
全栈程序员站长
2022/08/02
2.1K0
什么是跨域跨域解决方法_500错误原因解决方法
【nodejs】解决跨域问题
一般浏览器都是第二种方式限制跨域请求,那就是说请求已到达服务器,并有可能对数据库里的数据进行了操作,但是返回的结果被浏览器拦截了,那么我们就获取不到返回结果,这是一次失败的请求,但是可能对数据库里的数据产生了影响。
一尾流莺
2022/12/10
1.9K0
【nodejs】解决跨域问题
webpack-dev-server 使用教程
webpack-dev-server是我们在开发nodejs必须要掌握的工具,它可以帮助我们快速搭建开发环境。官网介绍如下
Karl Du
2023/10/20
5830
浅谈cors
最近有用 vue 然后调 face++的 api 做一个前端人脸识别的需求,其中使用了 axios 作为 http 请求库,配置浏览器 cors 限制时遇到了一些不太一样的问题,写篇博客记录一下。
ek1ng
2022/08/10
1.7K0
浅谈cors
前后端分离项目问题总结
这里注意,这里代理只支持本地开发时使用。在将整个项目放到服务器后,需要在web服务器配置后端服务的代理。否则前端页面的请求不可用!!
chao超的搬运文章
2023/10/15
2600
10 种CORS跨域解决方案
这是一个老生常谈的话题,以前我觉得这种基础文章没有什么好写的,最近为了线上问题深入了解底层,确实有点东西,下面汇总成10种方案。
sunsky
2022/09/09
7.6K0
10 种CORS跨域解决方案
十五:开发模式与webpack-dev-server
借助webpack,在开发模式下我们可以使用热重载、路由重定向、代理服务器等功能,而source-map更是准确定位代码错误的利器。
心谭博客
2020/04/20
7730
Axiso解决跨域访问
关键代码是:Axios.defaults.baseURL = '/api',这样每次发送请求都会带一个/api的前缀。
全栈程序员站长
2022/08/15
1.7K0
Axiso解决跨域访问
vue+webpack 你可能遇到的几种proxy或agent使用代理问题
这了总结一下用vue+webpack开发中可能遇到的各种proxy问题。希望能帮助到各位有需要的人。
shirishiyue
2018/11/07
4.7K0
axios 跨域问题_为什么会出现跨域问题
首先需要了解到浏览器的同源策略,同源策略是最核心也是最基本的安全功能,缺少同源策略浏览器的正常功能可能会受到影响。同源策略会阻止一个域的javascript脚本和另外一个域的能容进行交互。同源(即指在同一个域)就是两个页面具有相同的协议(protocol)、主机(host)和端口号(port)。
全栈程序员站长
2022/10/01
1.7K0
axios 跨域问题_为什么会出现跨域问题
解决 Vue 使用 Axios 进行跨域请求的方法详解
在开发现代 Web 应用时,前端和后端通常分离部署在不同的服务器上,这就会引发跨域请求问题。浏览器的同源策略(Same-Origin Policy)会阻止跨域请求,除非后端服务器配置了允许跨域请求的 CORS(Cross-Origin Resource Sharing)头。本文将详细介绍如何在 Vue 项目中使用 Axios 发起跨域请求时解决跨域问题。
繁依Fanyi
2024/08/02
2.9K0
Vue解决axios跨域--代理服务器解决
是因为浏览器的同源策略引起的,是浏览器加的安全限制 -- 所以我们需要去解决这个问题
打不着的大喇叭
2024/03/11
3710
Vue解决axios跨域--代理服务器解决
【CORS 报错】跨域请求问题:CORS 多种环境下的解决方案
跨域问题的本质是浏览器出于安全考虑,限制从一个源(域、协议、端口)加载资源到另一个源。这种安全机制被称为“同源策略”。同源策略规定,只有当请求的URL与当前网页的URL具有相同的协议、域名和端口时,浏览器才允许该请求通过。
空白诗
2025/05/22
7380
【CORS 报错】跨域请求问题:CORS 多种环境下的解决方案
浏览器同源策略与如何解决跨域问题总结
下表给出了与 URL http://store.company.com/dir/page.html 的源进⾏对⽐的示例:
henu_Newxc03
2022/05/05
2.1K0
浏览器同源策略与如何解决跨域问题总结
vue.cli项目封装全局axios,封装请求,封装公共的api和调用请求的全过程[通俗易懂]
在做vue中大型项目的时候,官方推荐使用axios,但是原生的axios可能对项目的适配不友好,所以,在工程开始的来封装一下axios,保持全项目数据处理的统一性。此文主要讲在vue-cil项目中如何封装axios,封装请求,封装公共的api,页面如何调用请求。
全栈程序员站长
2022/06/30
4K0
推荐阅读
相关推荐
webpack-dev-server代理后端一直报CORS跨域或500错误
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档