|
Problembeschreibung Wenn ein domänenübergreifender Aufruf MVC ASP.NET oder ein Dienst ASP.NET Web-API geschrieben wird, wird er unzugänglich. Fortpflanzungsmethode - Verwenden Sie eine Vorlage, um ein einfachstes ASP.NET Web-API-Projekt zu erstellen, debuggen Sie es, um sicherzustellen, dass es funktioniert
- Erstelle ein weiteres Projekt mit nur einer HTML-Seite und mache einen AJAX-Aufruf
- Öffnen Sie diese Seite in Ihrem Browser und Sie finden folgenden Fehler (405: Methode nicht erlaubt)
Hinweis: Die gleiche Situation tritt bei ASP.NET MVC auf. In einigen Fällen kann MVC auch direkt zur Entwicklung von Diensten verwendet werden, was im Vergleich zu WebAPI eigene Vor- und Nachteile hat. Nachfolgend ist ein Beispiel für einen Dienst, der mit MVC entwickelt wurde
Ursachenanalyse Der grundlegende Grund für das domänenübergreifende Problem ist, dass der Browser bei beiden Anfragen niedrige Rechte hat und in der Regel nur Aufrufe von Ressourcen in der lokalen Domäne erlaubt, es sei denn, der Zielserver teilt ihm ausdrücklich mit, dass domänenübergreifende Aufrufe erlaubt sind. Daher liegt das domänenübergreifende Problem zwar durch das Verhalten des Browsers, die Lösung liegt jedoch auf der Serverseite. Weil es nicht möglich ist, von allen Clients zu verlangen, die Sicherheit zu verringern.
Lösung Sowohl für ASP.NET MVC- als auch ASP.NET Web-API-Projekttypen habe ich recherchiert und festgestellt, dass folgendes Szenario machbar ist. Für ASP.NET MVC musst du nur den folgenden Inhalt zur web.config hinzufügen
Für ASP.NET Web-APIs muss zusätzlich zu den oben genannten Einstellungen ein spezielles Design hinzugefügt werden, nämlich für jeden API-Controller eine OPTIONS-Methode hinzuzufügen, ohne jedoch etwas zurückzugeben. öffentliche String-Optionen() { Null zurück; HTTP-200-Antwort mit leerem Körper }
Hinweis: Diese Funktion kann auch mit etwas Recherche durchgeführt werden, und es ist vielleicht besser, sie als Filter zu entwerfen.
|