C# 配置CORS后,网页返回错误,但也返回结果

C# 配置CORS后,网页返回错误,但也返回结果,c#,.net,visual-studio,cors,backend,C#,.net,Visual Studio,Cors,Backend,我正在创建一个简单的ASP.NET后端,我需要使CORS仅将我的网站(请求来自该网站)列入白名单,而从任何其他来源都无法访问该网站。我已经这样做了,如下图所示(我诚实地尝试了我知道的所有其他方法,但都没有成功),我所取得的成就是,当我提出任何请求(获取、放置、发布…)时,我总是从白名单上的网站(这很好),但我也得到了其他来源的响应,虽然我在浏览器控制台上只有一个CORS通用错误(我重复,在得到错误的同时,我也得到了答案,这是我不想要的)。 我该怎么办 提前感谢, 马特奥 public clas

我正在创建一个简单的ASP.NET后端,我需要使CORS仅将我的网站(请求来自该网站)列入白名单,而从任何其他来源都无法访问该网站。我已经这样做了,如下图所示(我诚实地尝试了我知道的所有其他方法,但都没有成功),我所取得的成就是,当我提出任何请求(获取、放置、发布…)时,我总是从白名单上的网站(这很好),但我也得到了其他来源的响应,虽然我在浏览器控制台上只有一个CORS通用错误(我重复,在得到错误的同时,我也得到了答案,这是我不想要的)。 我该怎么办

提前感谢,

马特奥

 public class Startup
 {
    public Startup(IHostingEnvironment configuration)
    {
        Configuration = configuration;
    }

    public IHostingEnvironment Configuration { get; }

    // This method gets called by the runtime. Use this method to add services to the container.
    public void ConfigureServices(IServiceCollection services)
    {


        services.AddCors(options =>
        {
            options.AddPolicy("AllowMyOrigin",
            builder => builder.WithOrigins("https://myclient"));
        });
        services.Configure<CookiePolicyOptions>(options =>
        {
            // This lambda determines whether user consent for non-essential cookies is needed for a given request.
            options.CheckConsentNeeded = context => true;
            options.MinimumSameSitePolicy = SameSiteMode.None;
        });

        services.AddEntityFrameworkSqlite()
            .AddDbContext<WebApiContext>(options => options.UseSqlite($"Data Source={Configuration.WebRootPath}/tutoriel.db"));            

        services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
        services.Configure<MvcOptions>(options =>
        {
            options.Filters.Add(new CorsAuthorizationFilterFactory("AllowMyOrigin"));
        }); //Imposta il cors su tutto il progetto (resource: DZone)
    }

    // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {

        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        else
        {
            app.UseExceptionHandler("/Home/Error");
            // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
            app.UseHsts();
        }
        app.UseCors("AllowMyOrigin");
        app.UseHttpsRedirection();
        app.UseStaticFiles();
        app.UseCookiePolicy();

        app.UseAuthentication();
        app.UseMvc(routes =>
        {
            routes.MapRoute(
                name: "default",
                template: "{controller=Home}/{action=Index}/{id?}");


        });
    }
}
警告:

Object { headers: {…}, status: 0, statusText: "Unknown Error", url: "https://mysite", ok: false, name: "HttpErrorResponse", message: "Http failure response for https://mysite: 0 Unknown Error", error: error }
core.js:15724
跨源读取阻塞(CORB)阻塞的跨源响应 使用MIME类型application/json。看见 更多 细节

已授权的站点请求错误

但结果显示

{"id":"w.paciaroni","luogo":"giappone","disponibilita":false}
我重复一遍,在得到错误的同时,我也得到了答案

这是预期的行为。CORS是一种浏览器安全功能。它旨在保护用户而不是服务器免受跨站点脚本攻击

我不想要

然后您必须在服务器上实现它。最简单的方法是编写一个中间件或ActionFilter,用于检查请求的
来源
头。如果它与任何允许的来源不匹配,则返回错误响应(我建议返回错误状态)

安全注意:攻击者可以很容易地欺骗源标题,因此这只会 阻止最愚蠢的黑客访问你的网页

我重复一遍,在得到错误的同时,我也得到了答案

这是预期的行为。CORS是一种浏览器安全功能。它旨在保护用户而不是服务器免受跨站点脚本攻击

我不想要

然后您必须在服务器上实现它。最简单的方法是编写一个中间件或ActionFilter,用于检查请求的
来源
头。如果它与任何允许的来源不匹配,则返回错误响应(我建议返回错误状态)

安全注意:攻击者可以很容易地欺骗源标题,因此这只会
阻止最愚蠢的黑客访问您的网页。

尝试http://myclient而不是https。如果需要,可以使用https调用API。请尝试http://myclient而不是https。然后,如果需要,使用https调用API。