2017-09-19 2 views
0

J'avais une application ASP.NET MVC fonctionnant sur le port 8799 qui envoyait des données JSON via un XMLHttpRequest à un gestionnaire de contrôleur MVC. Ce pipeline fonctionnait parfaitement bien. J'ai récemment lancé une deuxième application, cette fois-ci une application Express fonctionnant sur le port 8080, qui envoie à nouveau JSON de la même manière (même code exact, en utilisant à nouveau un XMLHttpRequest), au même contrôleur MVC fonctionnant sur le port 8799 Cette fois, cependant, il semble que lorsque la demande est reçue par le contrôleur, il n'y a pas de données à ce sujet.Envoi de JSON entre les ports locauxhost

Je me demande si c'est parce que je fais une demande d'origine croisée entre ces deux ports. Aller hors de cette hypothèse, j'ai ajouté les en-têtes personnalisés suivants à mon dossier web.config:

<customHeaders> 
    <add name="Access-Control-Allow-Origin" value="http://localhost" /> 
    <add name="Access-Control-Allow-Headers" value="X-AspNet-Version,X-Powered-By,Date,Server,Accept,Accept-Encoding,Accept-Language,Cache-Control,Connection,Content-Length,Content-Type,Host,Origin,Pragma,Referer,User-Agent" /> 
    <add name="Access-Control-Allow-Methods" value="GET, PUT, POST, DELETE, OPTIONS" /> 
    <add name="Access-Control-Max-Age" value="1000" /> 
    </customHeaders> 

Cela ne semble pas résoudre le problème. Comment puis-je déboguer ce problème, je ne semble pas lancer d'exceptions particulièrement utiles?

+0

Si vous exécutez le point de terminaison dans VS dans le débogage, vous devriez être en mesure d'attraper et de parcourir votre code. –

+0

Les demandes entre les ports sont comptées comme des domaines croisés et seront limitées par le navigateur sans les en-têtes CORS corrects. Faites en sorte que les ports correspondent ou implémentent CORS sur le serveur. [Voir ici pour plus d'informations] (https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS) – Liam

+0

@Liam, voir comment j'ai ajouté les en-têtes personnalisés pour l'application ASP.NET? Cela ne devrait-il pas résoudre d'éventuels problèmes de la SCRO? De plus, une erreur CORS ne déclencherait-elle pas une sorte d'exception utile dans l'application ASP.NET? –

Répondre

0

Le problème s'est révélé être CORS. Pour quelque raison que ce soit, le fichier web.config n'était pas utilisé par mon application .NET. Ainsi, je configure le réglage CORS dans mon fichier Startup.cs à la place, en utilisant services.AddCors() dans mon appel Configure().