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

ASP.NET Core + Vite-React移除代理后CORS问题求助

解决ASP.NET Core + Vite React移除代理后的CORS问题

关键排查与解决步骤

1. 修正Vite配置与前端请求地址

  • 彻底删除Vite配置中的server.proxy节点
  • 前端请求需改为直接指向ASP.NET Core的HTTPS地址,比如把原来的/weatherforecast替换为https://localhost:7047/weatherforecast,确保请求的Origin是Vite的HTTPS地址https://localhost:5173

2. 确认ASP.NET Core中间件逻辑

你的Startup.cs中UseCors的位置是正确的(在UseRouting之后、UseAuthorization之前),但需注意:

  • 控制器或Action上没有[DisableCors]属性覆盖全局策略
  • UseHttpsRedirection未导致请求异常跳转(前端直接请求后端HTTPS地址即可避免此问题)

3. 处理HTTPS证书信任问题(核心原因)

Vite和ASP.NET Core均使用自签名证书,浏览器默认不信任这类证书,会直接拦截CORS预检请求(表现为CORS错误,但实际是证书验证失败):

  • 信任ASP.NET Core证书:在项目根目录执行命令
    dotnet dev-certs https --trust
    
  • 信任Vite证书:打开https://localhost:5173,点击浏览器地址栏锁图标,手动将证书安装到「受信任的根证书颁发机构」

4. 验证CORS策略是否生效

用curl或Postman发送OPTIONS请求到https://localhost:7047/weatherforecast,检查响应头是否包含Access-Control-Allow-Origin: *(或指定的https://localhost:5173)。若未出现,需排查:

  • MyAllowSpecificOrigins变量名是否拼写正确
  • app.UseCors(MyAllowSpecificOrigins)是否在正确位置调用

5. 开发环境后优化(生产环境必备)

开发环境用AllowAnyOrigin()没问题,但生产环境需指定具体Origin,避免安全风险:

builder.WithOrigins("https://localhost:5173")
       .AllowAnyMethod()
       .AllowAnyHeader();

内容的提问来源于stack exchange,提问作者VN-Boy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 03:34:54