Пустой проект web.api, установите Microsoft.aspnet.webapi.cors 5.2.3, добавьте
config.EnableCors();
в вебапиконфиг. сделать контроллер и действие
public class HomeController : ApiController
{
[EnableCors("*" , "*" , "*")]
public async Task<string> Get()
{
return await Task.FromResult("omg");
}
}
Отладьте приложение, загрузите скрипт и выполните запрос к http://localhost:61939/api/Home.
отсутствуют заголовки CORS. web.config содержит:
<system.webServer>
<handlers>
<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>
what am I missing? Why would this not insert an Access-Control-Allow-Origin header in all request to my Get method?
Также ответ на определение CORS в web.config не является ответом... В какой-то момент мне нужно будет добавить проверку происхождения и, возможно, даже проверку метода HTTP, например:
if(requestContext.HttpMethod == "POST" && (origin == "https://someplace.com" || origin == "http://localhost"))