web-dev-qa-db-fra.com

Les cookies disparaissent après la redirection

J'ai:

1) une application côté client qui a son propre domaine: http://client.com

2) une application latérale de serveur qui possède un domaine distinct: http://server.com

À présent,

le scénario est:

1) Ouverture http://client.com/home Dans le navigateur, qui affiche une page HTML.

2) http://client.com/home redirige vers http://server.com/login

3) http://server.com/login stocke un cookie 'auth' et envoie une instruction redirection à http://client.com/welcome

Réponse:

Access-Control-Autory-Origin: *

Connexion: Garder-vivant

Longueur de contenu: 104

Type de contenu: Texte/HTML; Charset = utf-8

Date: Wed, 16 janv. 2019 10:47:11 GMT

Lieu: http://client.com/welcome

Set-Cookie: Auth = 1479DA80-197C-11E9-BA74-59606594E2FB; Chemin = /

Varier: Accepter

X-Powered-by: express

4) Le navigateur reçoit la réponse, qui contient le cookie 'Auth' '

5) Le navigateur se redirige http://client.com/welcome

6) 'Auth' Cookie est envoyé à http://client.com/welcome

Demande:

Cookie: auth = 1479DA80-197C-11E9-BA74-59606594E2FB

7) http://client.com/welcome retourne html mais ne renvoie pas le cookie 'auth' '

enter image description here

enter image description here

8) http://client.com/welcome fait un AJAX Demande à http://server.com/data (CORS activé), mais le cookie 'auth' n'est pas envoyé

9) http://server.com/data ne reconnaît pas l'utilisateur car il n'y a pas de cookie

Le côté client est un angular hébergé par node.js

Edit:

Comme suggéré, j'ai ajouté à la réponse de serveur.com:

Access-Control-Autoriser-lesdimensions: True

mais rien n'a été changé.

Code secondaire du client pertinent:

const headerOptions = new HttpHeaders({
      'Content-Type': 'application/json', 'withCredentials': 'true', 'Access-Control-Allow-Origin': 'true', 'Access-Control-Allow-Credentials': 'true'
    });

this.httpClient.get<any>(this.baseUrl + "data", { headers: headerOptions }).subscribe((res) => {
7
Alon

À partir de la spécification d'origine de contrôle-control-autoroute: pour les demandes sans identifiants, la valeur littérale "" peut être spécifié, comme une carte générique; *

Essayez d'ajouter un domaine spécifique au champ Access-Control-Allow-Origin.

Je pense que vous devriez utiliser l'application de proxy dans angular angular. Pour plus d'informations, cochez ce lien: https://github.com/angular/angular-cli/blob/master/docs/documentation/stories/proxy.md

0
tdev