Api 在.NET Core 3.1中添加窗口身份验证后出现Cors错误
WEPAPI工作正常,但在添加身份验证中间件后,它开始抛出CORS错误,下面是startup.cs代码 在谷歌搜索了所有地方,但似乎没有任何效果,请为我提供正确的方向Api 在.NET Core 3.1中添加窗口身份验证后出现Cors错误,api,asp.net-core,cors,Api,Asp.net Core,Cors,WEPAPI工作正常,但在添加身份验证中间件后,它开始抛出CORS错误,下面是startup.cs代码 在谷歌搜索了所有地方,但似乎没有任何效果,请为我提供正确的方向 public class Startup { readonly string MyAllowedSpecificOrigins = "_myAllowedSpecificOrigins"; public Startup(IConfiguration configu
public class Startup
{
readonly string MyAllowedSpecificOrigins = "_myAllowedSpecificOrigins";
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
public void ConfigureServices(IServiceCollection services)
{
services.AddCors(options =>
{
options.AddPolicy(name: MyAllowedSpecificOrigins,
builder =>
{
builder
.AllowAnyOrigin()
.AllowAnyHeader()
.AllowAnyMethod();
});
});
services.AddTransient<IJobRepository, JobRepository>();
services.AddSingleton<IConfiguration>(Configuration);
services.AddControllers();
services.AddAuthentication(NegotiateDefaults.AuthenticationScheme).AddNegotiate();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
///app.UseHttpsRedirection();
app.UseRouting();
app.UseCors(MyAllowedSpecificOrigins);
app.UseAuthentication();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}
}
}
公共类启动
{
只读字符串MyAllowedSpecificOrigins=“\u MyAllowedSpecificOrigins”;
公共启动(IConfiguration配置)
{
配置=配置;
}
公共IConfiguration配置{get;}
public void配置服务(IServiceCollection服务)
{
services.AddCors(选项=>
{
options.AddPolicy(名称:MyAllowedSpecificOrigins,
生成器=>
{
建设者
.AllowAnyOrigin()
.AllowAnyHeader()
.AllowAnyMethod();
});
});
services.AddTransient();
services.AddSingleton(配置);
services.AddControllers();
AddAuthentication(NegotiateDefaults.AuthenticationScheme.addConfertiate();
}
public void配置(IApplicationBuilder应用程序、IWebHostEnvironment环境)
{
if(env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
///app.UseHttpsRedirection();
app.UseRouting();
应用程序UseCors(MyAllowedSpecificOrigins);
app.UseAuthentication();
app.UseAuthorization();
app.UseEndpoints(端点=>
{
endpoints.MapControllers();
});
}
}
}
根据您的描述,我建议您首先添加.AllowCredentials()
,并确保客户端将XMLHttpRequest.withCredentials设置为true
凭证需要在CORS请求中进行特殊处理。默认情况下,浏览器不发送带有跨源请求的凭据。凭据包括cookie和HTTP身份验证方案。要使用跨源请求发送凭据,客户端必须将XMLHttpRequest.withCredentials设置为true
更多详细信息,请参阅。我建议您首先添加.AllowCredentials(),并确保客户端将XMLHttpRequest.withCredentials设置为true。详情,你可以参考这个。非常感谢!!已经修好了!!我很高兴这个解决方案解决了您的问题。我会写一封回信。请将其标记为答案,以便其他面临相同问题的人更容易找到答案。谢谢。还有一件事,当我在我的post请求中包含凭证包含的标题时,我得到了相同的cors错误。如以下标题:{“内容类型”:“应用程序/json”,},凭据:“包括”,