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

如何在Express服务器启用CORS?MEAN栈跨域请求遭拦截求助

解决MEAN栈CORS请求被拦截的问题

这问题的核心原因很明确——你服务端的CORS配置里,origin没有包含完整的协议前缀,导致浏览器的源校验直接失败了。

问题拆解

客户端的请求源是 http://localhost:4200,但你服务端CORS配置里写的是 ["localhost:4200"]。浏览器会把带协议的源和不带协议的视为完全不同的来源,所以预检请求时,服务端无法匹配到允许的源,自然就返回了不带Access-Control-Allow-Origin头的响应,直接触发了CORS拦截。

修复步骤

修改服务端的CORS配置,给origin加上http://前缀即可:

const cors = require('cors');
// 必须使用完整的协议+域名+端口格式
app.use(cors({origin:["http://localhost:4200"], credentials: true}))

额外排查点

如果修改后还是有问题,可以检查这几个地方:

  • 确保cors中间件是在所有路由定义之前注册的,不然路由请求可能绕开了CORS处理逻辑
  • 客户端的withCredentials: true配置没问题(你已经正确添加了,这点可以忽略)
  • 后续部署到生产环境时,记得把origin替换成对应的生产域名,不要一直用本地地址

你看到的错误提示“对预检请求的响应未通过访问控制检查”,本质就是服务端没返回匹配当前源的Access-Control-Allow-Origin头,修正origin配置后这个问题应该就能解决。

内容的提问来源于stack exchange,提问作者A.Z

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 06:55:59