本指南演示了在 ASP.NET Core Web API 中启用 CORS 的两种方法:使用中间件和手动标头注入方法。
方法一:基于中间件的CORS配置
最简单且推荐的方法是利用 Microsoft.AspNetCore.Cors
NuGet 包。
安装软件包:
<code>Install-Package Microsoft.AspNetCore.Cors</code>
配置 CORS 服务:
在您的 Startup.cs
文件中,注册 CORS 服务:
<code class="language-csharp">public void ConfigureServices(IServiceCollection services) { services.AddCors(); // ... other service configurations }</code>
使用 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
"*"for
WithOrigins`。这会向来自任何来源的请求打开您的 API,从而带来重大的安全风险。AddCustomHeader
或您选择的方法中的等效内容仔细定义允许的标头。 始终包含 "Content-Type"
。Microsoft.AspNetCore.Cors
包提供的 CORS 策略模型。 这允许命名策略和更复杂的场景。此增强指南为在 ASP.NET Core Web API 中实现 CORS 提供了更清晰的解释和改进的结构。 选择最适合您需求的方法并优先考虑安全最佳实践。
以上是如何在ASP.NET Core Web API中启用CORS?的详细内容。更多信息请关注PHP中文网其他相关文章!