Я спробував виконати кроки на веб-сайті http://enable-cors.org/server_aspnet.html, щоб мій RESTful API (реалізований з ASP.NET WebAPI2) працював із запитами про перехресне походження (CORS увімкнено). Це не працює, якщо я не модифікую web.config.
Я встановив залежність WebApi Cors:
install-package Microsoft.AspNet.WebApi.Cors -ProjectName MyProject.Web.Api
Тоді в моєму App_Start
класі WebApiConfig
є такий клас :
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
var corsAttr = new EnableCorsAttribute("*", "*", "*");
config.EnableCors(corsAttr);
var constraintsResolver = new DefaultInlineConstraintResolver();
constraintsResolver.ConstraintMap.Add("apiVersionConstraint", typeof(ApiVersionConstraint));
config.MapHttpAttributeRoutes(constraintsResolver);
config.Services.Replace(typeof(IHttpControllerSelector), new NamespaceHttpControllerSelector(config));
//config.EnableSystemDiagnosticsTracing();
config.Services.Replace(typeof(ITraceWriter), new SimpleTraceWriter(WebContainerManager.Get<ILogManager>()));
config.Services.Add(typeof(IExceptionLogger), new SimpleExceptionLogger(WebContainerManager.Get<ILogManager>()));
config.Services.Replace(typeof(IExceptionHandler), new GlobalExceptionHandler());
}
}
але після цього я запускаю додаток, я запитую у Fiddler такий ресурс, як: http: // localhost: 51589 / api / v1 / persons, і у відповіді я не бачу заголовків HTTP, які я повинен бачити, таких як:
Access-Control-Allow-Methods: POST, PUT, DELETE, GET, OPTIONS
Access-Control-Allow-Origin: *
Я пропустив якийсь крок? Я спробував із наступною анотацією на контролері:
[EnableCors(origins: "http://example.com", headers: "*", methods: "*")]
Той самий результат, CORS не ввімкнено.
Однак, якщо я додаю наступне у своєму web.config (навіть не встановлюючи залежність AspNet.WebApi.Cors), це працює:
<system.webServer>
<httpProtocol>
<!-- THESE HEADERS ARE IMPORTANT TO WORK WITH CORS -->
<!--
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Methods" value="POST, PUT, DELETE, GET, OPTIONS" />
<add name="Access-Control-Allow-Headers" value="content-Type, accept, origin, X-Requested-With, Authorization, name" />
<add name="Access-Control-Allow-Credentials" value="true" />
</customHeaders>
-->
</httpProtocol>
<handlers>
<!-- THESE HANDLERS ARE IMPORTANT FOR WEB API TO WORK WITH GET,HEAD,POST,PUT,DELETE and CORS-->
<!--
<remove name="WebDAV" />
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,PUT,DELETE" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<remove name="OPTIONSVerbHandler" />
<remove name="TRACEVerbHandler" />
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
-->
</handlers>
Будь-яка допомога буде дуже вдячна!
Дякую.