У меня были похожие проблемы с включением CORS в веб-API. Я попробовал несколько разных подходов, но они частично решили проблему.
Вот как я решил (не знаю, где я тогда читал об этом решении):
Добавьте следующую конфигурацию в файл веб-конфигурации; some_address должен быть заменен на адрес (а), который обращается к вашему веб-API. Если у вас несколько адресов, разделите их знаком ';'.
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<appSettings>
<add key="CorsOriginsSetting" value="http://localhost:54323" />
</appSettings>
</configuration> />
Добавьте следующий код в ваш проект веб-API:
using System.Configuration;
using System.Threading.Tasks;
using System.Web.Cors;
using Microsoft.Owin.Cors;
using Owin;
namespace MyWebAPI
{
public partial class Startup
{
public void ConfigureCors(IAppBuilder app)
{
var corsPolicy = new CorsPolicy
{
AllowAnyMethod = true,
AllowAnyHeader = true,
};
var origins = ConfigurationManager.AppSettings["CorsOriginsSetting"];
if (origins != null)
{
foreach (var origin in origins.Split(';'))
{
corsPolicy.Origins.Add(origin);
}
}
else
{
corsPolicy.AllowAnyOrigin = true;
}
var corsOptions = new CorsOptions
{
PolicyProvider = new CorsPolicyProvider
{
PolicyResolver = context => Task.FromResult(corsPolicy),
}
};
app.UseCors(corsOptions);
}
}
}
И вызвать его:
public partial class Startup
{
public void Configuration(IAppBuilder app)
{
//..
ConfigureCors(app);
//..
}
}
Надеюсь, это поможет.
Ура и счастливого кодирования!