2017-09-17 2 views
1

J'ai une API de base de données net fonctionnant sur localhost: 5000. J'ai ajoutédot net core api avec CORS rejetant toujours la demande

services.AddCors(); 

à la méthode ConfigureServices et

app.UseCors(builder => builder.WithOrigins("http://localhost:3000") 
      .AllowAnyOrigin() 
      .AllowAnyHeader() 
      .AllowAnyMethod()); 

la méthode Configurer dans StartUp.

J'ai un client js qui tente

return fetch('http://localhost:5000/api/Authorization', { 
method: 'POST', 
headers: { 
    'Accept': 'application/json', 
    'Content-Type': 'application/json', 
}, 
body: JSON.stringify({ 
    UserName: userName, 
    Password: password, 
})}).then((response) => response.json()) 
    .then((responseJson) => {return responseJson.userIsAdmin}); 
} 

Mais quand ce dernier est exécuté, le navigateur refuse, en disant:

Non 'Access-Control-Allow-Origin' l'en-tête est présent sur la ressource demandée. L'origine 'http://localhost:3000' n'est donc pas autorisée accès. La réponse avait le code d'état HTTP 500.

La recherche pointe vers les solutions déjà implémentées dans le projet d'API noté ci-dessus. Qu'est-ce que je rate?

+0

Dans votre 'StartUp.cs', où avez-vous Add/UseCors, avant ou après Add/UseMvc? Cela doit être avant. –

+0

* "La réponse avait le code d'état HTTP 500" * ⬅ c'est la seule partie importante du message cité dans la question. Ce n'est pas une erreur CORS; il ne ressemble qu'à un seul parce que le serveur n'ajoute pas l'en-tête 'Access-Control-Allow-Origin' à 500 réponses d'erreur - il ne fait probablement que l'ajouter aux réponses de succès 2xx. Alors que 500 indique que vous n'avez pas de problème CORS à la place, mais plutôt une défaillance côté serveur. C'est le vrai problème dont vous avez besoin pour identifier la cause de & fix: Le serveur dit qu'il y a une erreur fatale - côté serveur - et qu'il a cessé de fonctionner complètement, devient indisponible – sideshowbarker

Répondre

0

Vous êtes limité à une origine spécifique: builder.WithOrigins("http://localhost:3000"), cela signifie que l'origine de la demande de votre application ne peut être que http://localhost:3000, puis autoriser toute origine.

Commencez avec le moins de restrictions CORS et le travail à partir de là:

app.UseCors(builder => builder 
      .AllowCredentials() 
      .AllowAnyOrigin() 
      .AllowAnyHeader() 
      .AllowAnyMethod()); 

Voir this guide pour plus d'informations.

0

Ajoutez-vous également le drapeau au contrôleur? Ajoutez le drapeau EnableCors à votre contrôleur d'autorisation.

[EnableCors] 
public class AuthorizationController