2017-08-18 1 views
1

J'ai une situation où j'envoie une requête ajax à une API qui nécessite des données de cookie mais qui a un en-tête Access-Control-Allow-Origin: *.Comment forcer Angular à envoyer des cookies avec Http, mais sans {withCredentials: true}

Lorsque j'ajoute l'option withCredentials via http.get(url, {withCredentials: true}) il produit l'erreur suivante:

XMLHttpRequest cannot load http://my.website.com/api/find . The value of the 'Access-Control-Allow-Origin' header in the response must not be the wildcard '*' when the request's credentials mode is 'include'. Origin ' http://localhost:4200 ' is therefore not allowed access. The credentials mode of requests initiated by the XMLHttpRequest is controlled by the withCredentials attribute.

Mais quand je ne pas utiliser l'option withCredentials, pas de cookies sont envoyés.

Comment envoyer des cookies sans utiliser l'option withCredentials?

Répondre

1

Si vous faites une croix d'origine de la demande avec angulaire http.get, the requirements in the Fetch spec (qui régissent le comportement pour cela) vous ne pouvez nécessitent sans spécifier withCredentials (qui fixe le credentials mode for the request sous-jacente à « include »).

Le navigateur l'empêchera de fonctionner, car c'est ce que nécessitent les spécifications.

Donc, si vous voulez envoyer des informations d'identification dans la demande, ce que vous devez faire à la place est la suivante: (re) configurer les paramètres CORS du point de terminaison http://my.website.com/api/find telle que la valeur de l'en-tête de réponse Access-Control-Allow-Origin a une origine explicite plutôt que "*". La manière exacte de procéder dépend du système serveur utilisé pour traiter le contenu à partir du point de terminaison http://my.website.com/api/find. Mais dans de nombreux systèmes, vous pouvez le faire en définissant une option de configuration particulière telle que le serveur prenne la valeur de l'en-tête de requête Origin et l'envoie dans la valeur de l'en-tête de réponse Access-Control-Allow-Origin qu'il renvoie.