|
Description du problème Lorsqu’un appel inter-domaine ASP.NET MVC ou un service écrit ASP.NET API Web, il devient inaccessible. Méthode de reproduction - Utilisez un modèle pour créer un projet d’API Web ASP.NET simple, débogez-le pour vous assurer qu’il fonctionne
- Créer un autre projet avec une seule page HTML et effectuer un appel AJAX
- Ouvrez cette page dans votre navigateur et vous trouverez l’erreur suivante (405 : Méthode interdite)
Note : La même situation se produit dans ASP.NET MVC. Dans certains cas, MVC peut également être utilisé directement pour développer des services, ce qui présente ses propres avantages et inconvénients par rapport à WebAPI. Voici un exemple de service développé avec MVC
Analyse de la cause La raison fondamentale du problème inter-domaine est que le navigateur dispose de faibles privilèges sur les deux requêtes et n’autorise généralement que les appels vers des ressources du domaine local, sauf si le serveur cible lui indique explicitement que les appels inter-domaines sont autorisés. Ainsi, bien que le problème inter-domaine soit causé par le comportement du navigateur, la solution se trouve côté serveur. Parce qu’il n’est pas possible d’exiger que tous les clients réduisent la sécurité.
solution Pour ASP.NET types de projets MVC et ASP.NET Web API, j’ai fait quelques recherches et déterminé que le scénario suivant est réalisable. Pour ASP.NET MVC, il suffit d’ajouter le contenu suivant dans le web.config
Pour ASP.NET API Web, en plus des paramètres ci-dessus, un design spécial doit être ajouté, qui consiste à ajouter une méthode OPTIONS pour chaque contrôleur API, mais sans rien retourner. Options de chaînes publiques () { retourner nul ; Réponse HTTP 200 avec corps vide }
Note : Cette fonction peut aussi être réalisée avec quelques recherches, et il peut être préférable de la concevoir comme un filtre.
|