Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Api 在.NET Core 3.1中添加窗口身份验证后出现Cors错误_Api_Asp.net Core_Cors - Fatal编程技术网

Api 在.NET Core 3.1中添加窗口身份验证后出现Cors错误

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

WEPAPI工作正常,但在添加身份验证中间件后,它开始抛出CORS错误,下面是startup.cs代码

在谷歌搜索了所有地方,但似乎没有任何效果,请为我提供正确的方向

    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”,},凭据:“包括”,