2016-07-19 4 views
1

projet vide de web.api, installez Microsoft.aspnet.webapi.cors 5.2.3, ajoutezAPI Web 2 CORS IIS express et de débogage Pas de contrôle d'accès-allow-tête d'origine

config.EnableCors(); 

à webapiconfig. faire contrôleur et l'action

public class HomeController : ApiController 
{ 
    [EnableCors("*" , "*" , "*")] 
    public async Task<string> Get() 
    { 
     return await Task.FromResult("omg"); 
    } 
} 

application de débogage et de la charge Fiddler et faire une demande de http://localhost:61939/api/Home

il n'y a pas en-têtes CORS présents. web.config contient:

<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> 

ce que je manque? Pourquoi ne pas insérer un en-tête Access-Control-Allow-Origin dans toutes les demandes à ma méthode Get?

également la réponse de la définition CORS dans web.config n'est pas une réponse ... A un moment donné, je vais devoir ajouter une vérification d'origine et potentiellement même vérifier quelque chose comme méthode HTTP:

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

Répondre

3

Qu'est-ce que vous avez fait est suffisant pour permettre CORS, vous pouvez également activer CORS sur tous les contrôleurs en utilisant ce code:

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

Je ne sais pas comment vous testez, mais notez qu'une seule fois la demande contient l'en-tête Origin, il renvoie le Access-Control-Allow-Origin en-tête dans la réponse. Si vous omettez l'en-tête d'origine dans la demande, la réponse ne contiendra pas le Access-Control-Allow-Origin.

Request and Response Headers

+0

Je ne suis pas sûr que je suis, je ne suis pas en utilisant owin (app.UseCors) –

+0

Désolé, je ne l'ai pas remarqué qu'il ne l'utilise pipelines .I've édité la réponse, un autre regard – akazemis

+0

Tout à fait raison, c'est tout ce qui me manquait, merci beaucoup! –