2016-04-12 3 views
0

Ich versuche, CORS in meiner ASP.Net MVC-Website zu aktivieren. Die Referenzverbindung, die ich verwendet habe, kann here gefunden werden.Fehler beim Versuch, CORS in der ASP.Net MVC-Website zu aktivieren

Ich habe das nugget-Paket für CORS heruntergeladen und die folgenden Änderungen an meinem Code vorgenommen.

I CORS-Modul Web.Config wie unten hinzugefügt:

<system.webServer> 
    <modules> 
     <remove name="FormsAuthentication" /> 
    </modules> 
    <!---CORS--> 
    <modules runAllManagedModulesForAllRequests="true"> 
     <add name="MvcCorsHttpModule" 
     type="Thinktecture.IdentityModel.Http.Cors.Mvc.MvcCorsHttpModule"/> 
    </modules> 
    <!---CORS--> 
    <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> 
</system.webServer> 

In global.asax.cs, fügte ich hinzu:

protected void Application_Start() 
{ 
    AreaRegistration.RegisterAllAreas(); 
    FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); 
    RouteConfig.RegisterRoutes(RouteTable.Routes); 
    BundleConfig.RegisterBundles(BundleTable.Bundles); 
    //--CORS 
    RegisterCors(MvcCorsConfiguration.Configuration); 
} 

private void RegisterCors(MvcCorsConfiguration corsConfig) 
{ 
    var corsAttr = new EnableCorsAttribute("https://www.youtube.com", "*", "*"); 
    corsConfig.EnableCors(); 

} 
//xxCORS 

Aber ich bin immer Fehler mit MvcCorsConfiguration:

Der Name 'MvcCorsConfiguration' existiert im aktuellen Kontext nicht.

Muss ich einen Namespace hinzufügen? Bitte helfen Sie!

+0

Welche Version von ASP.NET MVC verwenden Sie? – AGB

+0

@AGB: Ich benutze Version 5.2. Bitte helfen Sie, wenn Sie herausfinden könnten, was falsch ist. Ich bin seit Stunden damit beschäftigt. Ich versuche gerade, ein Video von Youtube zu spielen und es gibt diesen Fehler weiter: Kein 'Access-Control-Allow-Origin'-Header ist auf der angeforderten Ressource vorhanden. Origin 'null' ist daher nicht erlaubt. " –

+0

Ich denke, das Tutorial, das Sie verwenden, ist etwas veraltet. Können Sie [dieses Nuget-Paket] (https://www.nuget.org/packages/Thinktecture) ausprobieren. IdentityModel.SystemWeb /) und folgen [dieses Beispiel] (https://github.com/IdentityModel/Thinktecture.IdentityModel/tree/master/samples/SystemWeb/ClaimsAuthorizeSample/ClaimsAuthorizeSample) von den Projekt-Erstellern? – AGB

Antwort

0

Wenn Sie domainübergreifende AJAX-Anfragen an Ihre mvc-Anwendung senden möchten, müssen Sie nur CORS.But aktivieren. Wenn Sie eine domainübergreifende AJAX-Anfrage von Ihrer mvc-Anwendung an andere URLs stellen, müssen Sie sie nicht aktivieren CORS in Ihrer mvc-Anwendung.Nur dieses Szenario getestet. erstellt eine Probe mvc-Anwendung, dann eine Ajax-Anfrage an http://jsonplaceholder.typicode.com/posts/1 URL, es hat gut funktioniert. Eine Lösung wäre, bewegen Sie Ihre Logik zu Web-API und aktivieren Sie CORS, dann rufen Sie diese URL von Ihrem MVC oder einer anderen Anwendung

+0

Es tut mir leid, tat ich verstehe nicht wirklich, was du gesagt hast. Ich spiele ein Video von youtube mit iframe. Das Video wird abgespielt, aber ich erhalte immer den Fehler "Origin null in Access-Control-Allow-Origin-Header nicht gefunden." Ich bin mit json nicht sehr vertraut oder xml. Könnten Sie bitte erklären? Und ich benutze webapi nicht. Ich baue Website in MVC. –

+0

Versuchte, Ihr Problem neu zu verursachen. Aber ich erhalte keinen Fehler. Ich habe den folgenden Code in die cshtml Seite gesetzt. Es funktioniert in allen Browsern. Sie müssen Ihre mvc-App nicht für die Verwendung von CORS konfigurieren. Also bitte versuchen Sie dieses Ding. Entfernen Sie die CORS-Einstellung, die Sie vorgenommen haben, oder erstellen Sie eine einfache mvc-App und fügen Sie das iframe-Tag ein. Prüfen Sie, ob Sie einen Fehler erhalten. –

+0

Ich habe den gleichen Code auf einem neuen MVC-Projekt versucht, und habe den gleichen Fehler. Cross-Origin-Anforderung blockiert: Die Richtlinie "Gleiche Herkunft" verbietet das Lesen der Remoteressource unter https://gg.google.com/csi?v=2&s=youtube&action=embed& (Grund: CORS-Header 'Access-Control-Allow-Origin' stimmt nicht überein '*'). Bekam diesen Fehler in Mozilla. –

Verwandte Themen