在将WebApp部署到服务器上并尝试向其发出请求后,网站只是不使用cookie对用户进行身份验证,并且任何请求都被CORS拒绝:
访问“ https://example.it/vmenu/expired.html处的XMLHttpRequest”(从“ https://example.it/api/profilo/”重定向)“ https://www.example.it”已被CORS政策阻止:否请求中存在“ Access-Control-Allow-Origin”标头资源。
但是实际上在web.config中,CORS设置为'*'
我正在使用.NET Core 3.1
该API作为IIS WebSite托管,而从该WebSite WebApplication调用/ vmenu /调用该API]
Ajax调用按以下步骤完成(来自Web应用程序VMenu文件夹中的index.html):
var api = 'https://example.it/api/profilo/' $.get( api ) .done(function( data ) { ... });
虽然这是我的
ConfigureServices
代码:
public void ConfigureServices(IServiceCollection services)
{
services.AddCors(options =>
{
options.AddDefaultPolicy(
builder =>
{
builder.WithOrigins("*")
.WithHeaders(HeaderNames.ContentType)
.WithMethods("GET", "POST", "PUT", "DELETE", "OPTIONS");
});
});
services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
.AddCookie(options => {
options.Cookie.Name = "AUTH_TOKEN";
options.Cookie.MaxAge = TimeSpan.FromMinutes(120);
options.Events = new CookieAuthenticationEvents()
{
OnRedirectToLogin = (context) =>
{
context.HttpContext.Response.Redirect("https://example.it/vmenu/expired.html");
return Task.CompletedTask;
}
};
});
services.AddControllers();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseHttpsRedirection();
app.UseRouting();
app.UseCors();
app.UseAuthentication();
app.UseAuthorization();
app.UseCookiePolicy();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}
在将我的WebApp部署到服务器上并尝试向其发出请求后,网站只是不使用cookie对用户进行身份验证,并且任何请求都被CORS拒绝:访问...]]
您是否尝试过使用中间件为您执行CORS处理?
在Microsofts documentation中,有一个示例可以解决您的问题。您可以删除web.config中的行并改用它: