Угловой CORS, C # серверной стороне сбой - PullRequest
0 голосов
/ 01 февраля 2019

Я использую HTTP-пост-вызов веб-API C # и выдает ошибку «Нет Access-Control-Allow-Origin»

Этот метод вызывается во время выполнения.Используйте этот метод для добавления служб в контейнер.

WEB API - StartUp.cs

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

        services.AddMvc().AddJsonOptions(options =>
        {
            options.SerializerSettings.ContractResolver = new ReadOnlyJsonContractResolver();
            options.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;
        });
    }

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

// Контроллер

     [HttpPost]
     [Route("ValidateUser")]
     [EnableCors("CorsPolicy")]
     public ValidateUser<string> Get()
    {
        return new string[] { "value1", "value2" };
    }

Ошибка: -

Access-Control-Allow-Origin

Не уверен, что я пропустил, но это должно работать ....

Ответы [ 2 ]

0 голосов
/ 01 февраля 2019

1) Установите пакет Microsoft.AspNet.WebApi.Cors

Install-Package Microsoft.AspNet.WebApi.Cors

2) Откройте файл webapiconfig.cs файл и добавьте следующую строку в метод Register () (непосредственно перед добавлением маршрутов):

config.EnableCors();

3) украсьте ваш контроллер / методы действий (где это применимо) следующей строкой:

 [EnableCors(origins: "http://www.myclientsite.com", headers: "*", methods: "*")]
public class TestController : ApiController{   .......   }
0 голосов
/ 01 февраля 2019
services.AddCors();
            services.AddCors(o => o.AddPolicy("AllowOrigin", builder =>
            {
                builder.AllowAnyOrigin()
                       .AllowAnyMethod()
                       .AllowAnyHeader();
            }));

// Настройка

public void Configure(IApplicationBuilder app, IHostingEnvironment env, WhiteBoxDBContext context)
    {
        app.UseCors("AllowOrigin");
        app.UseMvc();
    }

// Контроллер

[HttpPost]
     [Route("ValidateUser")]
     public ValidateUser<string> Get()
    {
        return new string[] { "value1", "value2" };
    }
...