Я использую Web API 2. в своем WebApiConfig, у меня это есть.
private static void EnableCrossSiteRequests(HttpConfiguration config)
{
var origin = WebConfigurationManager.AppSettings["origin"];
var cors = new EnableCorsAttribute(
origins: "*",
headers: "*",
methods: "*");
config.EnableCors(cors);
}
Метод регистрации
public static void Register(HttpConfiguration config)
{
config.MapHttpAttributeRoutes();
config.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
EnableCrossSiteRequests(config);
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
config.Filters.Add(new ErrorHandler());
}
Из моего понимания не следует, чтобы все, что мне нужно, чтобы это работало? Он работал на моем компьютере-разработчике, когда они размещаются вместе. Но теперь один находится на веб-сервере, и API находится на другом веб-сервере.
Я получаю - Origin... не найден в заголовке Access-Control-Allow-Origin.
У меня он установлен, чтобы разрешить все Origin. Я попытался добавить его в веб-конфигурацию и другие методы, размещенные вокруг. Я не понимаю, почему его отрицают?
Передняя часть - угловая, с использованием Ngresource для запросов.
Если я использую вкладку "Сеть" в инструментах chrome dev, ответ на запрос 200 OK, и после этого ничего не происходит. Все время искали решения, ничего не пробовал до сих пор.
Спасибо.
Из моего понимания не следует, чтобы все, что мне нужно, чтобы это работало?
Неа. Вы должны украсить веб-API-контроллеры/действия, которые вы хотели бы назвать перекрестным доменом с атрибутом [EnableCors]
:
[EnableCors(origins: "http://mywebclient.azurewebsites.net", headers: "*", methods: "*")]
public class MyController: ApiController
{
...
}
Здесь good read
на эту тему.