2016-07-19 7 views
1

Пустой web.api проект, установить Microsoft.aspnet.webapi.cors 5.2.3, добавитьWeb API 2 CORS IIS Экспресс Debug и No Access-Control-Allow-Origin заголовок

config.EnableCors(); 

к webapiconfig. сделать контроллер и действие

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> 

что мне не хватает? Почему это не вставляет заголовок Access-Control-Allow-Origin во весь запрос в метод Get?

Также ответ определения CORS в web.config не ответ ... В какой-то момент мне нужно будет добавить проверку происхождения и потенциально даже проверять HTTP метод что-то вроде:

if(requestContext.HttpMethod == "POST" && (origin == "https://someplace.com" || origin == "http://localhost")) 

ответ

3

Что вы сделали достаточно, чтобы позволить CORS, вы также можете включить CORS на все контроллеры, используя этот код:

var cors = new EnableCorsAttribute("*", "*", "*"); 
config.EnableCors(cors); 

я не уверен, как вы проверяете его, но обратите внимание, что только один раз в запросе заголовок Origin, он возвращает Access-Control-Allow-Origin Заголовок в ответе. Если вы опустите заголовок источника в запросе, ответ не будет содержать Access-Control-Allow-Origin.

Request and Response Headers

+0

Я не уверен, что я следую, я не использую Owin (app.UseCors) –

+0

К сожалению, я не заметил, что это не с помощью трубопроводов .I've отредактированных ответа, есть еще один вид – akazemis

+0

Ваше полное право, это все, что мне не хватало, большое вам спасибо! –