首页 >后端开发 >C++ >如何在ASP.NET Core Web API中启用CORS?

如何在ASP.NET Core Web API中启用CORS?

Patricia Arquette
Patricia Arquette原创
2025-01-24 18:21:14344浏览

How to Enable CORS in ASP.NET Core Web API?

在 ASP.NET Core Web API 中配置跨源资源共享 (CORS)

本指南演示了在 ASP.NET Core Web API 中启用 CORS 的两种方法:使用中间件和手动标头注入方法。

方法一:基于中间件的CORS配置

最简单且推荐的方法是利用 Microsoft.AspNetCore.Cors NuGet 包。

  1. 安装软件包:

    <code>Install-Package Microsoft.AspNetCore.Cors</code>
  2. 配置 CORS 服务:

    在您的 Startup.cs 文件中,注册 CORS 服务:

    <code class="language-csharp">public void ConfigureServices(IServiceCollection services)
    {
        services.AddCors();
        // ... other service configurations
    }</code>
  3. 使用 CORS 中间件:

    Configure 方法中,利用 app.UseCors 中间件定义允许的来源和 HTTP 方法。 将 "http://example.com" 替换为您实际允许的来源。

    <code class="language-csharp">public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ... )
    {
        app.UseCors(options => options.WithOrigins("http://example.com").AllowAnyMethod());
        // ... other middleware configurations
    }</code>

方法2:手动标头注入(回退方法)

如果中间件方法证明无效,您可以直接将 CORS 标头添加到 HTTP 响应中。 由于可维护性降低,这通常不太受欢迎。

<code class="language-csharp">app.Use(async (context, next) =>
{
    context.Response.Headers.Add("Access-Control-Allow-Origin", "http://example.com");
    context.Response.Headers.Add("Access-Control-Allow-Methods", "GET, POST, PUT, PATCH, DELETE");
    context.Response.Headers.Add("Access-Control-Allow-Headers", "X-PINGOTHER, Content-Type, Authorization");

    await next.Invoke();
});</code>

请记住将此中间件放置在 app.UseRouting() 或处理路由的等效中间件之前。

重要注意事项:

  • *通配符来源(生产环境中的`):** Avoid using the wildcard"*"forWithOrigins`。这会向来自任何来源的请求打开您的 API,从而带来重大的安全风险。
  • 特定标头: 使用 AddCustomHeader 或您选择的方法中的等效内容仔细定义允许的标头。 始终包含 "Content-Type"
  • 高级配置:要进行更精细的控制,请探索 Microsoft.AspNetCore.Cors 包提供的 CORS 策略模型。 这允许命名策略和更复杂的场景。

此增强指南为在 ASP.NET Core Web API 中实现 CORS 提供了更清晰的解释和改进的结构。 选择最适合您需求的方法并优先考虑安全最佳实践。

以上是如何在ASP.NET Core Web API中启用CORS?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn