2016-07-19 27 views
1

Leer web.api Projekt, installieren Microsoft.aspnet.webapi.cors 5.2.3, fügenWeb API 2 CORS IIS Express Debug und No Access-Control-Allow-Origin-Header

config.EnableCors(); 

webapiconfig. machen Controller und die Aktion

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

Debug-App und Laden von bis Fiedler und tun eine Anfrage an http://localhost:61939/api/Home

gibt es keine CORS-Header vorhanden. web.config enthält:

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

was bin ich dabei? Warum würde das nicht einen Access-Control-Allow-Origin-Header in alle Anfragen an meine Get-Methode einfügen?

auch die Antwort von CORS in web.config definiert, ist keine Antwort ... Irgendwann werde ich brauchen, um Ursprung Prüfung hinzufügen und möglicherweise sogar die HTTP-Methode so etwas wie Kontrolle:

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

Antwort

3

Was Sie haben, ist genug getan, um CORS zu aktivieren, können Sie auch CORS auf allen Controllern ermöglichen mit diesem Code:

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

ich bin nicht sicher, wie Sie es sind zu testen, aber beachten Sie, dass nur einmal die Anforderung enthält die Origin Header, gibt es diezurückHeader in Antwort. Wenn Sie den Ursprungsheader in der Anforderung nicht angeben, enthält die Antwort nicht die Access-Control-Allow-Origin.

Request and Response Headers

+0

Ich bin nicht so sicher, ob ich folgen, ich bin nicht owin (app.UseCors) mit –

+0

Leider habe ich nicht bemerkt, dass es nicht Pipelines mit .I've die Antwort bearbeitet, haben einen anderen Blick – akazemis

+0

Ihr völlig richtig, das ist alles, was ich vermisst habe, vielen Dank! –