【问题标题】:CORS policy - response to preflight requestCORS 政策 - 对预检请求的响应
【发布时间】:2021-02-18 17:23:57
【问题描述】:

我正在我的 .NET Core 3.1 Web 应用程序中设置 CORS 策略,但我收到一条错误提示

Access to XMLHttpRequest at 'http://10.10.100.60/api/api/values/getmyorders?toOrder=false&uId=8c3d745b-78b7-47ed-ac93-310fe61b8daf' from origin 'http://10.10.100.66:8080' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.

我以前从未遇到过这种预检错误。 这是我的Startup 的样子

public void ConfigureServices(IServiceCollection services)
        {
         //code shortened for brevity
         services.AddCors();
        }

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
        {
            loggerFactory.AddProvider(new Log4NetProvider("log4net.config", true));
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            else
            {
                // 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(x => x
                .AllowAnyOrigin()
                .AllowAnyMethod()
                .AllowAnyHeader()
                .AllowCredentials());

            app.UseAuthentication();
            app.UseHttpsRedirection();
            app.UseMvc();
        }

我还尝试使用其他 CORS 方法,例如带有命名策略和中间件的 CORS 以及默认策略,但我仍然遇到相同的预检错误。关于如何进行的任何建议?

【问题讨论】:

  • 您是否有机会使用身份服务器 4?你有开放 id 连接的身份验证吗?
  • 只是想一想,可能是因为app.UseHttpsRedirection(),客户端请求在http上,可能是因为app.UseHttpsRedirection(),当它到达服务器时被重定向到https。
  • 不,我不使用身份服务器 - @nalnpir 我也想过,我删除了 app.UseHttpsRedirection() 并出现了同样的错误 - @RameshKanjinghat

标签: c# .net-core cors preflight


【解决方案1】:

这就是几个小时后对我有用的方法。

public void ConfigureServices(IServiceCollection services)
        {
            services.AddCors(options =>
            {
                options.AddPolicy("AllowAllHeaders",
                builder =>
                {
                    builder.AllowAnyOrigin()
                    .AllowAnyHeader()
                    .AllowAnyMethod();
                });
            });
        }

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
        {
            app.UseCors("AllowAllHeaders");
            app.UseAuthentication();
            app.UseHttpsRedirection();
            app.UseMvc();
        }

我现在只使用AllowAnyOrigin()AllowAnyHeader()AllowAnyMethod()。我认为AllowCredentials() 存在问题。希望这个答案对将来的人有所帮助。

【讨论】:

    猜你喜欢
    • 2019-11-18
    • 2021-05-05
    • 1970-01-01
    • 1970-01-01
    • 2020-01-23
    • 2019-05-13
    • 2020-09-30
    • 2019-07-15
    • 2019-04-17
    相关资源
    最近更新 更多