it-swarm.com.de

Aktivieren von Cross-Origin-Anforderungen in ASP.NET-MVC

Ich versuche, eine Webanwendung zu erstellen, die mit Cross-Origin-Anforderungen (CORS) in MVC 5 arbeitet. Ich habe alles ohne Ergebnis versucht.

Mit einem Attribut  

public class AllowCrossSiteJsonAttribute: ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
            filterContext.RequestContext.HttpContext.Response.AddHeader("Access-Control-Allow-Origin", "*");

        base.OnActionExecuting(filterContext);
    }
}

Mit EnableCors-Attribut  

 [EnableCors("*")]

Nichts funktioniert Ich fange an zu glauben, dass es unmöglich ist

15
Petar Bechev

Fügen Sie Ihrem Web-API-Controller oder Ihrer Controller-Methode das Attribut [EnableCors] hinzu, um Cross-Origin-Anforderungen zu aktivieren:

[EnableCors(origins: "http://systematixindia.com", headers: "*", methods: "*")]


 public class TestController : ApiController
    {
        // Controller method`enter code here`s not shown...
    }

Weiterlesen

2

Am besten finde ich, dass Sie Ihre eigene Klasse so erstellen:

 enter image description here

mit dem folgenden Code darin:

using System;
using System.Web.Mvc;

public class AllowCrossSiteAttribute : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        filterContext.RequestContext.HttpContext.Response.AddHeader("Access-Control-Allow-Origin", "http://localhost:4200");
        filterContext.RequestContext.HttpContext.Response.AddHeader("Access-Control-Allow-Headers", "*");
        filterContext.RequestContext.HttpContext.Response.AddHeader("Access-Control-Allow-Credentials", "true");

        base.OnActionExecuting(filterContext);
    }
}

Danach können Sie diesen Dekorator für eine -Methode oder für den gesamten Controller verwenden.

 enter image description here  enter image description here

Sie sollten das nach diesem Vorgang in Ihrem response-Header sehen können

 enter image description here

Danke an diese Antwort

27
Fitch

Fügen Sie die Konfigurationseinstellung in Ihre Datei web.config ein, um den Wert für Access-Control-Allow-Origin in customHeaders folgendermaßen festzulegen: 

<configuration>
 <system.webServer>
   <httpProtocol>
     <customHeaders>
       <add name="Access-Control-Allow-Origin" value="*" />
     </customHeaders>
   </httpProtocol>
 </system.webServer>
</configuration>

Sie möchten this und this für weitere Details und andere Optionen besuchen.

26
Yogi

Ich hatte mit der Implementierung von OWIN CORS (nuget Microsoft.Owin.Cors) Erfolg, um Cors für MVC-Controller und Owin-Middleware zusätzlich zu ApiControllers zu aktivieren. Microsoft.AspNet.WebApi.Cors (mit config.EnableCors() und dem [EnableCors]-Attribut) scheint nur mit ApiControllers zu funktionieren. 

Siehe http://benfoster.io/blog/aspnet-webapi-cors für Beispielcode.

0
PointZeroTwo

Ich denke, Sie müssen es im Schritt "OnAuthentication" hinzufügen oder config in Ihre Web-Config einfügen. Sie können meinen Code ausprobieren :) es funktioniert

 public class AllowCrossSiteJsonAttribute : ActionFilterAttribute, IAuthorizationFilter
    {
        public void OnAuthorization(AuthorizationContext filterContext)
        {
            filterContext.RequestContext.HttpContext.Response.AddHeader("Access-Control-Allow-Origin", "*");
        }

    }
0
Alex Nguyen