asp.net Core MVC 2 - настроить CORS для принятия нулевого источника - PullRequest
0 голосов
/ 20 марта 2019

Мне нужно настроить веб-API, реализованный с использованием ядра 2.2 asp.net, для принятия «нулевого» источника (заголовок «Origin» отсутствует или пуст).

Прежде чем ты прыгнешь мне в горло: я знаю, что иметь нулевое происхождение плохо.Но, к сожалению, я ничего не могу с этим поделать, потому что вызов сделан сторонним сервером, который передает нулевое начало, и я не могу его контролировать, поэтому мне нужно, чтобы мой API принял нулевое начало.

Я пытался сделать это:

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    app.UseHsts();
    app.UseMvc();
    app.UseCors(options => options.AllowAnyHeader().AllowAnyMethod().AllowAnyOrigin().AllowCredentials());
}

...

public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);

    //Configuring CORS
    services.AddCors();
}

, но это не имеет никакого значения.Когда я делаю запрос POST (используя метод jQuery ajax), я получаю следующую ошибку:

enter image description here

У меня есть подозрение, что нулевой / отсутствующий источникпросто отбрасывается, прежде чем даже проверить это ... я прав?Есть ли способ принять нулевое происхождение?

Ответы [ 2 ]

4 голосов
/ 20 марта 2019

Промежуточное программное обеспечение CORS должно быть размещено перед промежуточным программным обеспечением MVC, или промежуточное программное обеспечение MVC (и ваш контроллер) отправит ответ, не позволяя промежуточному программному обеспечению CORS иметь шанс на запуск.

Измените метод настройки следующим образом:

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    app.UseHsts();
    app.UseCors(options => options.AllowAnyHeader().AllowAnyMethod().AllowAnyOrigin().AllowCredentials());
    app.UseMvc(); // Add this middleware last.
}

Порядок AddMvc и AddCors в методе ConfigureServices не имеет значения.

0 голосов
/ 20 марта 2019

Хорошо, я решил это.Проблема была очень простой: методы UseCors() и AddCors() в классе Startup должны вызываться ДО методов UseMvc() и AddMvc().

...