C# .net core 2.1 CORS api

C# .net core 2.1 CORS api,c#,ajax,.net-core,C#,Ajax,.net Core,我有一个api来处理post ajax请求。当我调用它时,我得到了臭名昭著的Cors错误消息: CORS策略已阻止从源“”访问“”处的XMLHttpRequest:请求的资源上不存在“访问控制允许源”标头 没问题。我以前做过,他们有很多资源(例如)描述如何向初创公司添加cors策略。问题是我似乎无法让它工作 这是我的Sartup.cs: public class Startup { public Startup(IConfiguration configuration) {

我有一个api来处理post ajax请求。当我调用它时,我得到了臭名昭著的Cors错误消息:

CORS策略已阻止从源“”访问“”处的XMLHttpRequest:请求的资源上不存在“访问控制允许源”标头

没问题。我以前做过,他们有很多资源(例如)描述如何向初创公司添加cors策略。问题是我似乎无法让它工作

这是我的Sartup.cs:

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

    readonly string MyAllowSpecificOrigins = "_myAllowSpecificOrigins";


    public IConfiguration 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(MyAllowSpecificOrigins,
            builder =>
            {
                builder.WithOrigins("*").AllowAnyMethod().AllowAnyHeader().AllowAnyOrigin();
            });
        });

        services.AddDbContext<ApplicationDbContext>(options =>
            options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));

        services.AddIdentity<ApplicationUser, IdentityRole>(options =>
        {
            // User settings
            options.User.RequireUniqueEmail = true;
            options.SignIn.RequireConfirmedEmail = true;

            // Password settings
            options.Password.RequireDigit = true;
            options.Password.RequiredLength = 8;
            options.Password.RequiredUniqueChars = 1;
            options.Password.RequireLowercase = false;
            options.Password.RequireNonAlphanumeric = true;
            options.Password.RequireUppercase = false;
        })

            .AddEntityFrameworkStores<ApplicationDbContext>()
            .AddDefaultTokenProviders();

        // Add application services.
        services.AddTransient<IEmailSender, EmailSender>();
        services.AddAntiforgery(o => o.SuppressXFrameOptionsHeader = true);

        services.AddMvc(options =>
        {
            options.Filters.Add(new AutoValidateAntiforgeryTokenAttribute());

        });

    }

    public void Configure(IApplicationBuilder app, IHostingEnvironment env,
        RoleManager<IdentityRole> roleManager, IServiceProvider serviceProvider)
    {

        app.UseCors(MyAllowSpecificOrigins);

        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
            app.UseBrowserLink();
            app.UseDatabaseErrorPage();
            app.UseCors(MyAllowSpecificOrigins);
        }
        else
        {

            app.UseExceptionHandler("/Home/Error");
            app.UseCors(MyAllowSpecificOrigins);

        }

        app.UseStaticFiles();
        app.UseAuthentication();

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

        //UserDbContextSeed.Seed(serviceProvider).Wait();
    }//Configure

}
这是我的方法签名

  [Route("[action]")]
    [HttpPost]       
    [IgnoreAntiforgeryToken]
    public IActionResult Post_Data(model v){......}
最后是我的ajax需求:

$.ajax({
                type: 'POST',
                url: 'Myserver/api/v23/Post_Data',
                dataType: 'json',
                contentType: "application/json", //
                data: JSON.stringify(Param),
                success: function (result) {
                     console.log(results);
                },
                error: function (request, status, error) {
                    console.log(error);
                }
            });
我已经尝试将[Enable CORS(“\uuu MyAllowSpecificCorigins”)属性添加到控制器,但这也不起作用。这应该不难,我显然遗漏了一些明显的东西。

有什么建议吗?

尝试将AddCors的语法更改为:

services.AddCors(o => o.AddPolicy(AllowSpecificOrigins, builder =>
            {
                builder.AllowAnyOrigin()
                       .AllowAnyMethod()
                       .AllowAnyHeader();
            }));

尝试将AddCors的语法更改为:

services.AddCors(o => o.AddPolicy(AllowSpecificOrigins, builder =>
            {
                builder.AllowAnyOrigin()
                       .AllowAnyMethod()
                       .AllowAnyHeader();
            }));

对于那些想知道改变了什么的人,Sergey让我移除。WithOriginations(“*”)。就像一个符咒。对于那些想知道改变了什么的人,Sergey让我移除。WithOriginations(“*”)。就像一个符咒。