In meiner web.config möchte ich mehr als eine Domain für die access-control-allow-origin
Direktive angeben . Ich möchte nicht verwenden *
. Ich habe diese Syntax ausprobiert:
<add name="Access-Control-Allow-Origin" value="http://localhost:1506, http://localhost:1502" />
dieses
<add name="Access-Control-Allow-Origin" value="http://localhost:1506 http://localhost:1502" />
dieses
<add name="Access-Control-Allow-Origin" value="http://localhost:1506; http://localhost:1502" />
und das hier
<add name="Access-Control-Allow-Origin" value="http://localhost:1506" />
<add name="Access-Control-Allow-Origin" value="http://localhost:1502" />
aber keiner von ihnen funktioniert. Was ist die richtige Syntax?
asp.net
iis
cors
web-config
Sam
quelle
quelle
*
Wert, mit dem jeder Ursprung auf die Ressource zugreifen kann. Die ursprüngliche Frage bezog sich jedoch auf die Whitelist einer Reihe von Domains.Für IIS 7.5+ und Rewrite 2.0 können Sie Folgendes verwenden:
Erläutern des
RESPONSE_Access_Control_Allow_Origin
Teils der Servervariablen :In Rewrite können Sie eine beliebige Zeichenfolge verwenden,
RESPONSE_
und es wird der Antwortheader erstellt, wobei der Rest des Wortes als Headername verwendet wird (in diesem Fall Access-Control-Allow-Origin). Beim Umschreiben werden die Unterstriche "_" anstelle der Bindestriche "-" verwendet (beim Umschreiben werden sie in Bindestriche umgewandelt).Erläutern der Servervariablen
HTTP_ORIGIN
:Ebenso können Sie in Rewrite einen beliebigen Anforderungsheader
HTTP_
als Präfix verwenden. Gleiche Regeln für die Bindestriche (verwenden Sie die Unterstriche "_" anstelle der Bindestriche "-").quelle
(http(s)?:\/\/((.+\.)?(domain1|domain2)\.(com|org|net)))
. Auf diese Weise können Sie ganz einfach andere Domänen hinzufügen und mehrere Top-Level-Domänen (z. B. com, org, net usw.) unterstützen.In Web.API kann dieses Attribut
Microsoft.AspNet.WebApi.Cors
wie unter http://www.asp.net/web-api/overview/security/enabling-cross-origin-requests-in-web-api beschrieben hinzugefügt werdenIn MVC können Sie ein Filterattribut erstellen, um diese Arbeit für Sie zu erledigen:
Aktivieren Sie es dann entweder für bestimmte Aktionen / Controller:
Oder fügen Sie es für alle Controller in Global.asax.cs hinzu
quelle
Nachdem ich jede Antwort gelesen und ausprobiert hatte, half mir keiner von ihnen. Bei der Suche an anderer Stelle habe ich festgestellt, dass Sie ein benutzerdefiniertes Attribut erstellen können, das Sie dann Ihrem Controller hinzufügen können. Es überschreibt die EnableCors und fügt die Whitelist-Domänen hinzu.
Diese Lösung funktioniert gut, da Sie die Whitelist-Domänen in der Webkonfiguration (Appsettings) haben können, anstatt sie im EnableCors-Attribut auf Ihrem Controller zu harcodieren.
Ich habe diesen Leitfaden online gefunden und er hat wie ein Zauber funktioniert:
http://jnye.co/Posts/2032/dynamic-cors-origins-from-appsettings-using-web-api-2-2-cross-origin-support
Ich dachte, ich würde das hier für jeden in Not fallen lassen.
quelle
Ich habe es geschafft, dies im Code für die Bearbeitung von Anfragen zu lösen, nachdem ich den Rat von 'Monsur' befolgt habe.
quelle
Für IIS 7.5+ können Sie das IIS CORS-Modul verwenden: https://www.iis.net/downloads/microsoft/iis-cors-module
Ihre web.config sollte ungefähr so aussehen:
Die Konfigurationsreferenz finden Sie hier: https://docs.microsoft.com/en-us/iis/extensions/cors-module/cors-module-configuration-reference
quelle
Schauen Sie sich die Thinktecture IdentityModel-Bibliothek an - sie bietet volle CORS-Unterstützung:
http://brockallen.com/2012/06/28/cors-support-in-webapi-mvc-and-iis-with-thinktecture-identitymodel/
Und es kann den gewünschten ACA-Origin dynamisch ausgeben.
quelle
Sie können diesen Code zu Ihrem asp.net-Webapi-Projekt hinzufügen
in der Datei Global.asax
quelle
Sie können owin Middleware verwenden, um eine Cors-Richtlinie zu definieren, in der Sie mehrere Cors-Ursprünge definieren können
quelle
Du brauchst nur:
<add name="Access-Control-Allow-Origin" value="*" />
aus Ihrer web.config löschen .Application_BeginRequest
Fügen Sie dies anschließend in die Methode von Global.asax ein:Ich hoffe diese Hilfe. diese Arbeit für mich.
quelle