设置为'*'时无'Access-Control-Allow-Origin'

问题描述 投票:0回答:1

在将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拒绝:访问...]]

c# cors asp.net-web-api2
1个回答
0
投票

您是否尝试过使用中间件为您执行CORS处理?

Microsofts documentation中,有一个示例可以解决您的问题。您可以删除web.config中的行并改用它:

© www.soinside.com 2019 - 2024. All rights reserved.