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

如何为ASP.NET Core中特定端点开启任意跨域访问?

为特定ASP.NET Core端点开放任意跨域来源访问

步骤1:新增允许任意Origin的CORS策略

在ConfigureServices方法中,除了已有的AllowLocalApp策略,添加一个专门开放所有来源的策略(注意跨域凭证的兼容性问题):

private const string AllowLocalApp = "_myAllowLocalApp";
private const string AllowAnyOrigin = "_allowAnyOrigin"; // 新增策略标识

string[] corsEnabledOrigins = configuration.GetSection("CORSEnabled").Get<string[]>();

services.AddCors(options =>
{
    // 原有受限来源策略
    options.AddPolicy(
        name: AllowLocalApp,
        policy =>
        {
            policy.WithOrigins(corsEnabledOrigins)
                  .AllowAnyHeader()
                  .AllowAnyMethod()
                  .AllowCredentials();
        });

    // 新增允许任意Origin的策略
    options.AddPolicy(
        name: AllowAnyOrigin,
        policy =>
        {
            // 无需跨域凭证时使用此配置
            policy.AllowAnyOrigin()
                  .AllowAnyHeader()
                  .AllowAnyMethod();

            // 若需携带Cookie/认证凭证,替换为以下配置(浏览器不允许AllowAnyOrigin与AllowCredentials共存)
            // policy.SetIsOriginAllowed(_ => true)
            //       .AllowAnyHeader()
            //       .AllowAnyMethod()
            //       .AllowCredentials();
        });
});

步骤2:在目标端点绑定新策略

直接在需要开放的端点上添加[EnableCors]属性,指定新增的策略名称即可,无需使用[DisableCors]:

[Route("[controller]")]
[ApiController]
public class AuthsController : ControllerBase
{
    [HttpGet("confirm")]
    [EnableCors(AllowAnyOrigin)] // 绑定开放策略
    public async Task<IActionResult> ConfirmAccount([FromQuery] string userId, [FromQuery] string token)
    {
        // 业务逻辑实现
        return Ok();
    }
}

关键注意事项

  • 中间件顺序:确保app.UseCors()位于app.UseRouting()之后、app.UseAuthorization()之前,否则端点上的CORS属性不会生效:
    app.UseRouting();
    
    // 必须放在此位置才能让属性策略生效
    app.UseCors(AllowLocalApp);
    
    app.UseAuthorization();
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllers();
    });
    
  • 跨域凭证限制:浏览器禁止同时设置AllowAnyOrigin和AllowCredentials,如果需要跨域携带凭证,必须用SetIsOriginAllowed(_ => true)替代AllowAnyOrigin()。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 07:18:12