CORS: le mode d'identification est 'include'
Oui, je sais ce que vous pensez - encore un autre de la SCRO question, mais cette fois, je suis perplexe.
Donc, pour commencer, le message d'erreur:
XMLHttpRequest ne peut pas charger http://localhost/Foo.API/token. L'
la valeur de l '"Access-Control-Allow-Origin' en-tête de la réponse
pas le caractère générique '*' lors de la demande de les informations d'identification de mode est
"inclure". Origine " http://localhost:5000 ' est donc pas permis
d'accès. Les informations d'identification du mode de demandes initiées par le
XMLHttpRequest est contrôlée par le withCredentials attribut.
Je ne suis pas sûr de ce que l'on entend par les informations d'identification de mode est 'include'?
Alors quand j'ai effectuer la demande dans le facteur, j'ai de l'expérience pas une telle erreur:
Mais lorsque j'accède à la même demande par le biais de mon angularjs web app, je suis perplexe par cette erreur. Voici mon angualrjs de requête/réponse. Comme vous allez le voir, la réponse est OK 200
mais je reçois encore de la SCRO erreur:
Fiddler de Demande et de Réponse:
L'image suivante illustre la demande et de la réponse de web front-end API
Sur la base de tous les autres postes que j'ai lu en ligne, il semble comme je suis en train de faire la bonne chose, c'est pourquoi je ne comprends pas l'erreur. Enfin, voici le code que j'utilise dans angualrjs (login usine):
De la SCRO mise en Œuvre de l'API - Référence:
Méthode 1:
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
EnableCrossSiteRequests(config);
}
private static void EnableCrossSiteRequests(HttpConfiguration config)
{
var cors = new EnableCorsAttribute("*", "*", "*")
{
SupportsCredentials = true
};
config.EnableCors(cors);
}
}
Méthode 2:
public void Configuration(IAppBuilder app)
{
HttpConfiguration config = new HttpConfiguration();
ConfigureOAuth(app);
WebApiConfig.Register(config);
app.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll);
app.UseWebApi(config);
}
Merci beaucoup d'avance!
source d'informationauteur Richard Bailey
Vous devez vous connecter pour publier un commentaire.
Le problème provient de votre Angulaire code:
Quand
withCredentials
est défini sur true, il est tentant d'envoyer des informations d'identification ou des cookies avec la demande. Que signifie une autre origine est potentiellement essayer de faire les requêtes authentifiées, le caractère générique ("*") n'est pas autorisée comme "Access-Control-Allow-Origin" en-tête.Vous auriez à répondre explicitement à l'origine de la demande dans le "Access-Control-Allow-Origin" en-tête pour faire ce travail.
Je recommande explicitement la liste blanche l'origine que vous souhaitez autoriser à faire les requêtes authentifiées, parce que tout simplement de répondre à l'origine de la demande signifie que tout site peut faire des appels authentifiés à votre backend si l'utilisateur arrive à avoir une session valide.
- Je expliquer ce genre de choses dans cet article j'ai écrit tout à l'arrière.
De sorte que vous pouvez soit définir
withCredentials
de falsification ou de mettre en œuvre une origine blanche et de répondre à la SCRO demandes avec une pièce d'origine dès lors que les informations d'identification sont impliquésPersonnalisation de la SCRO Angulaire 5 et le Printemps de Sécurité (Cookie solution de base)
Sur le côté Angulaire nécessaire l'ajout de l'option drapeau
withCredentials: true
pour Cookie de transport:Sur Java côté serveur requis ajoutant
CorsConfigurationSource
pour la configuration de la SCRO politique:Méthode
configure(HttpSecurity http)
par défaut, utilisecorsConfigurationSource
pourhttp.cors()