Aktivieren CORS über Web.config vs WebApiConfig-und Controller-Attribute
Scheint es zwei funktional unterschiedliche Art und Weise zu ermöglichen cross-origin-request-sharing-Web-API-2.
Ist zu importieren System.Web.Http.Cors
, schmücken einen controller mit der EnableCors
Attribut und schreiben config.EnableCors()
in der WebApiConfig:
[EnableCors(origins: "http://111.111.111.111", headers: "*", methods: "*")]
public class GenericController : ApiController
{
//etc.
Die andere ist das Web ändern.config:
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="http://111.111.111.111" />
<add name="Access-Control-Allow-Methods" value="*" />
<add name="Access-Control-Allow-Headers" value="*" />
Gibt es einen funktionalen Unterschied zwischen diesen beiden unterschiedlichen Ansätzen? Welches ist das richtige - nicht das gleiche erreichen? Wenn beide Methoden werden verwendet, um CORS, werden sich die Dinge sprengen?
InformationsquelleAutor alex | 2015-04-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie fügen Sie die Kopfzeilen auf das web.config, jeder Anfrage serviert, die von dieser Anwendung das angegebene Header. Diese Methode unterstützt die web-server-Ebene und nicht davon abhängig
config.EnableCors()
ausgeführt wird. Sie diese Methode verwenden können, hinzufügen, um alle HTTP-header, die Sie wollen.Auf der anderen Seite, die
EnableCors
Attribut erfordert WebAPI und Sie müssen code hinzufügen, damit es funktioniert. Der end-user, das Ergebnis ist das gleiche.Als für die Art und Weise ist besser? Ich habe gemocht, die die Einstellungen in der Anwendungs-code, indem Sie das Attribut, so werden diese Einstellungen offensichtlich für zukünftige Entwickler. Je nach Ihren Bedürfnissen, können Sie sich möglicherweise in einer abstrakten
CorsApiController
die Ihre wichtigsten ApiControllers Erben könnten liefern der gleichen CORS-Header über und über. Aber diese Methode funktioniert nicht, wenn die CORS-Header müssen, variieren von controller zu controller oder von Handlung zu Handlung.System.Web.Http.Cors
namespace ist nur um für zusätzliche Flexibilität bei großen Projekten, wo mehrere Controller können, müssen verschiedene cross-origin-Anfrage-sharing-Regeln. Ich danke Ihnen sehr!Wenn Sie add Header ins web.config, ist es noch nötig, um installieren die
Microsoft.AspNet.WebApi.Cors
- Paket, für Sie zu arbeiten? Oder ist das eine eigene Strategie komplett von der Installation des nuget-cors-Paket?völlig unterschiedliche Strategien. Wählen Sie eine oder das andere. In der web.config Fall, Sie können nicht von der
Access-Control-Allow-Origin
header für eine Liste der zulässigen orgins.InformationsquelleAutor Steven V