Конфигурация: Angular 6 отправляет http-запрос;это localhost: 4200.Запрос к Entity Framework (стандартный .net), размещенный на IIS в порту 4000. Он отправляет POST в / api / Registration / CreateNew, передавая объект данных в теле.Функции получения контроллера были протестированы как запросы не-CORS с использованием браузера, отправляющего напрямую на localhost: 4000, и они работают должным образом.
Ошибка: «Доступ к XMLHttpRequest на« http://localhost:4000/api/Registration/CreateNew' от источника »http://localhost:4200' был заблокирован политикой CORS: Ответ на запрос предварительной проверки не проходит проверку контроля доступа: регистрация: 1 У него нет статуса HTTP ok. "
Ниже приведен снимок экрана fiddlerЗаголовок Запрос от 4200 (угловой) и ответ.
IIS Entity Framework WebConfig:
<appSettings>
<add key="webpages:Version" value="3.0.0.0" />
<add key="webpages:Enabled" value="false" />
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
<add key="allowedCorsOrigins" value="http://localhost:4200" />
<add key="allowedCorsMethods" value="get, post, put, delete, options, batch" />
<add key="allowedCorsHeaders" value="*" />
</appSettings>
App_Start / WebApiConfig.cs
public static void Register(HttpConfiguration config)
{
config.EnableCors();
// Web API configuration and services
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
Также добавлен атрибут класса к классу контроллера:
[RoutePrefix("api/Registration")]
[EnableCors(origins: "http://localhost:4200", headers: "*", methods: "*")]
public class RegistrationController : ApiController
{
Согласно заголовкам Fiddler, показанным выше, может показаться, что запросы CORS должны выполняться.У меня есть точки останова на линиях контроллера IIS, и они никогда не получают удар, поэтому может показаться, что (если я правильно понимаю) «предполетный» запрос не позволяет запрос CORS.
К сожалению, этозначительный кусок кода и его трудно выложить в сети.