在 .NET Core 3.1 中添加窗口身份验证后出现 Cors 错误
Posted
技术标签:
【中文标题】在 .NET Core 3.1 中添加窗口身份验证后出现 Cors 错误【英文标题】:Cors Error After adding window authentication in .NET Core 3.1 【发布时间】:2021-07-17 09:52:29 【问题描述】:Wep API 工作正常,但添加身份验证中间件后开始抛出 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();
);
【问题讨论】:
我建议您可以先添加 .AllowCredentials() 并确保客户端将 XMLHttpRequest.withCredentials 设置为 true 。详情可以参考这个article。 非常感谢!!修好了!! 我很高兴这个解决方案解决了您的问题。我会写一个回复。请将其标记为答案,以便其他面临相同问题的人更容易找到答案。谢谢。 当我在我的帖子请求中包含凭证包含的标头时,我得到了相同的 cors 错误。就像下面的标头:“Content-Type”:“application/json”, , 凭据: 'include', 【参考方案1】:根据您的描述,我建议您可以先添加.AllowCredentials()
,并确保客户端将 XMLHttpRequest.withCredentials 设置为 true。
凭据需要在 CORS 请求中进行特殊处理。默认情况下,浏览器不会通过跨域请求发送凭据。凭据包括 cookie 和 HTTP 身份验证方案。要使用跨域请求发送凭据,客户端必须将 XMLHttpRequest.withCredentials 设置为 true。
更多细节,你可以参考这个article。
【讨论】:
以上是关于在 .NET Core 3.1 中添加窗口身份验证后出现 Cors 错误的主要内容,如果未能解决你的问题,请参考以下文章
如何在 ASP.NET Core 3.1 中启用多重身份验证?
Asp.net core 3.1 保护 API 和 Web 应用程序
.Net Core 3.1 合并 JWT 和 OpenIDConnect 身份验证