在ASP.NET中,支持OPTIONS请求标头可以通过以下方法实现:
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// 添加CORS策略
var cors = new EnableCorsAttribute("*", "*", "*");
config.EnableCors(cors);
// 其他配置代码
}
}
public class FilterConfig
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
// 添加CORS策略
var cors = new EnableCorsAttribute("*", "*", "*");
filters.Add(cors);
// 其他过滤器配置代码
}
}
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
// 添加CORS策略
services.AddCors(options =>
{
options.AddPolicy("AllowAll",
builder =>
{
builder.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader();
});
});
// 其他服务配置代码
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
// 使用CORS策略
app.UseCors("AllowAll");
// 其他中间件配置代码
}
}
<modules>
<add name="OptionsHttpModule" type="OptionsHttpModule"/>
</modules>
</system.webServer>
然后创建一个名为OptionsHttpModule的HTTP模块,并在其中处理OPTIONS请求:
public class OptionsHttpModule : IHttpModule
{
public void Init(HttpApplication context)
{
context.BeginRequest += Context_BeginRequest;
}
private void Context_BeginRequest(object sender, EventArgs e)
{
var context = ((HttpApplication)sender).Context;
if (context.Request.HttpMethod == "OPTIONS")
{
context.Response.StatusCode = 200;
context.Response.AddHeader("Access-Control-Allow-Origin", "*");
context.Response.AddHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS");
context.Response.AddHeader("Access-Control-Allow-Headers", "Content-Type, Accept, Authorization");
context.Response.AddHeader("Access-Control-Max-Age", "1728000");
context.Response.End();
}
}
public void Dispose()
{
}
}
通过以上方法,可以在ASP.NET中支持OPTIONS请求标头。
领取专属 10元无门槛券
手把手带您无忧上云