asp.net-core – 在.NET Core Web API上为CORS启用OPTIONS标头
发布时间:2020-05-24 14:00:31 所属栏目:asp.Net 来源:互联网
导读:我没有在Stackoverflow上找到解决方案后解决了这个问题,所以我在这里分享我的问题和答案中的解决方案. 在使用AddCors的.NET Core Web Api应用程序中启用跨域策略后,它仍无法在浏览器中运行.这是因为浏览器(包括Chrome和Firefox)将首先发送OPTIONS请求,而我的
|
我没有在Stackoverflow上找到解决方案后解决了这个问题,所以我在这里分享我的问题和答案中的解决方案. 在使用AddCors的.NET Core Web Api应用程序中启用跨域策略后,它仍无法在浏览器中运行.这是因为浏览器(包括Chrome和Firefox)将首先发送OPTIONS请求,而我的应用程序只响应204 No Content. 解决方法在项目中添加一个中间件类来处理OPTIONS动词.using System.Threading.Tasks;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Hosting;
namespace Web.Middlewares
{
public class OptionsMiddleware
{
private readonly RequestDelegate _next;
private IHostingEnvironment _environment;
public OptionsMiddleware(RequestDelegate next,IHostingEnvironment environment)
{
_next = next;
_environment = environment;
}
public async Task Invoke(HttpContext context)
{
this.BeginInvoke(context);
await this._next.Invoke(context);
}
private async void BeginInvoke(HttpContext context)
{
if (context.Request.Method == "OPTIONS")
{
context.Response.Headers.Add("Access-Control-Allow-Origin",new[] { (string)context.Request.Headers["Origin"] });
context.Response.Headers.Add("Access-Control-Allow-Headers",new[] { "Origin,X-Requested-With,Content-Type,Accept" });
context.Response.Headers.Add("Access-Control-Allow-Methods",new[] { "GET,POST,PUT,DELETE,OPTIONS" });
context.Response.Headers.Add("Access-Control-Allow-Credentials",new[] { "true" });
context.Response.StatusCode = 200;
await context.Response.WriteAsync("OK");
}
}
}
public static class OptionsMiddlewareExtensions
{
public static IApplicationBuilder USEOptions(this IApplicationBuilder builder)
{
return builder.UseMiddleware<OptionsMiddleware>();
}
}
}
然后添加app.USEOptions();这是Configure方法中Startup.cs的第一行. public void Configure(IApplicationBuilder app,IHostingEnvironment env,ILoggerFactory loggerFactory)
{
app.USEOptions();
} (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net – 如何使用EF仅更新单个字段
- asp.net-core – 哪些.NET框架版本支持.NET Framework(CLR)
- asp.net-mvc – EditorFor()和additionalViewData:如何在h
- asp.net-mvc-3 – 货币格式化MVC
- 在WCF服务中使用ASP.NET成员资格提供者身份验证
- asp.net-mvc-3 – 在具有默认值的模型上注释属性
- asp.net – 更改用户登录名后的身份验证错误
- 文档在线预览的实现
- asp.net – 如何解决“服务器错误在’/’应用程序”错误?
- asp.net – 如何获取控制器和操作名称在OnActionExecuting?
