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

ASP.NET Core配置CORS后POST请求仍遇跨域错误求助

解决CORS策略错误的方案

1. 修正中间件执行顺序

ASP.NET Core中间件的执行顺序直接影响功能生效与否,UseCors必须放在UseAuthorization和MapControllers之前,且要在UseStaticFiles之后。调整你的Program.cs代码中的中间件顺序:

using Microsoft.AspNetCore.HttpOverrides;

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddControllers().AddNewtonsoftJson();
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();

// 配置CORS默认策略
builder.Services.AddCors(options =>
{
    options.AddDefaultPolicy(
        builder =>
        {
            builder.WithOrigins("http://127.0.0.1:5500")
                   .AllowAnyHeader()
                   .AllowAnyMethod();
        });
});

builder.WebHost.UseUrls("http://*:5000");
var app = builder.Build();

// 转发头中间件需放在最靠前位置
app.UseForwardedHeaders(new ForwardedHeadersOptions
{
    ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto
});

// 静态文件处理中间件
app.UseStaticFiles();

// CORS中间件:必须在授权和路由映射之前
app.UseCors();

app.UseAuthorization();

app.MapControllers();

app.Run();

2. 显式启用CORS策略(可选)

如果调整顺序后仍未生效,可以在控制器或特定Action上添加[EnableCors]属性,强制启用默认CORS策略:

[ApiController]
[Route("[controller]")]
[EnableCors] // 绑定默认CORS策略
public class BookingController : ControllerBase
{
    [HttpPost("CreateBooking")]
    public IActionResult CreateBooking([FromBody] BookingModel model)
    {
        // 业务逻辑实现
        return Ok();
    }
}

3. 排查其他潜在问题

  • 确认服务器端口为5000,前端请求的地址http://127.0.0.1:5000/CreateBooking没有拼写错误。
  • 若使用反向代理(如Nginx),需确保代理服务器正确传递CORS响应头。
  • 避免同时使用WithOrigins("*")和AllowCredentials()(当前场景未用到后者,后续若涉及认证需注意)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 11:43:18