簡體   English   中英

IIS 上的 Net Core Cors 和 Angular 應用程序

[英]Net Core Cors and Angular application on IIS

我在我的應用程序上設置正確的 Cors 設置時遇到了一些麻煩。 NetCore與應用Angular6托管在IIS中, angular應用程序超出了.Net項目,編譯和插入內部wwwroot發布時。

現在的問題是,當我對angular部分進行編碼時,我想直接調用發布服務器來測試一些功能。 我嘗試了任何一種方法來解決這個問題,但似乎我總是在 Cors 設置方面遇到問題,但僅對於POST調用, GET工作正常。 所以這是我的啟動代碼:

// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
    services.AddSingleton<ILoggerManager, LoggerManager>();
    services.AddSingleton<IDbContext, MongoDbContext>();
    services.AddSingleton<IIdGenerator, IdGenerator>();
    services.AddSwaggerGen(c =>
    {
        c.SwaggerDoc("v1", new Info { Title = "My API", Version = "v1" });
        c.AddSecurityDefinition("Bearer", new ApiKeyScheme(){In = "header",Description = "Please enter JWT with Bearer into field", Name = "Authorization", Type = "apiKey"});
        c.AddSecurityRequirement(new Dictionary<string, IEnumerable<string>>
        {
            {"Bearer", Enumerable.Empty<string>()}
        });
    });
    services.AddCustomRepositories();
    services.AddCustomServices();
    services.AddJwtService();

    //Add cors
    services.AddCors();

    // Add framework services.
    services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);

    services.Configure<IISOptions>(options =>
    {
        options.ForwardClientCertificate = false;
    });
    services.Configure<Settings>(Configuration.GetSection("SystemSettings"));
}

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

    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }
    else
    {
        app.UseHsts();
    }

    app.UseCors(builder => builder
        .AllowAnyOrigin()
        .AllowAnyHeader()
        .AllowAnyMethod());

    app.UseDefaultFiles();

    // this will serve js, css, images etc.
    app.UseStaticFiles();
    app.Use(async (context, next) =>
    {
        if (context.Request.Path.HasValue && 
            !context.Request.Path.Value.StartsWith("/api/") &&
            !context.Request.Path.Value.StartsWith("/swagger"))
        {
            context.Response.ContentType = "text/html";
            await context.Response.SendFileAsync(
                env.ContentRootFileProvider.GetFileInfo("wwwroot/index.html")
            );
            return;
        }
        await next();
    });

    //app.UseHttpsRedirection();
    app.UseSwagger();
    app.UseAuthentication();
    app.UseMiddleware(typeof(ErrorHandlingMiddleware));

    app.UseMvc();  

    app.UseSwaggerUI(c =>
    {
        c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1");
        c.DocExpansion(DocExpansion.None);
    });
}

由於我希望僅出於開發目的啟用此功能,因此我想在全球范圍內啟用它。

我認為您需要手動設置原點

app.UseCors(builder =>
            builder.AllowAnyOrigin().AllowAnyMethod());

這里所示

將 cors 添加到啟動 asp.net core web API

這是在 Web API 中添加 cors 的必要部分。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM