Obtenir et stocker des cookies (de Set-Cookie) à partir d'une réponse AJAX POST

J'ai un code simple jQuery AJAX POST:

$.ajax({ type: "POST", url: AppConstants.URLs.PROXY, data: message, xhrFields: { withCredentials: true }, success: function(data, status, xhr) { console.log("Cookie: " + xhr.getResponseHeader("Set-Cookie")); } }); 

Et je souhaite recevoir le cookie et l'enregistrer en utilisant cookies-js .

Mais selon http://www.w3.org/TR/XMLHttpRequest/#the-getallresponseheaders%28%29-method :

  1. Retournez tous les en-têtes de réponse, à l' exclusion des en-têtes qui sont une combinaison insensible à la casse pour Set-Cookie ou Set-Cookie2 , en une seule chaîne, chaque ligne d'en-tête étant séparée par une paire U + 000D CR U + 000A LF, à l'exclusion de la ligne d'état, Et avec chaque nom d'en-tête et la valeur d'en-tête séparés par une paire U + 003A COLON U + 0020 SPACE.

En utilisant l'outil Réseau dans Chrome, "Set-Cookie" est visible dans les en-têtes de réponse. J'ai également vérifié que l'en-tête "Set-Cookie" apparaît à l'aide de curl .

Que dois-je faire pour enregistrer le cookie dans mon application avant? De plus, mon application fonctionne uniquement sur https .

J'aimerais fournir plus de détails sur demande.

Vous ne pouvez pas obtenir les données de cookie dans votre JS. L'API ne vous permettra pas.

Que dois-je faire pour enregistrer le cookie dans mon application avant?

Cliquez simplement pour envoyer l'en Set-Cookie tête Set-Cookie partir du code côté serveur. Le navigateur doit l'enregistrer automatiquement.

Le navigateur ne peut pas donner accès à des cookies tiers tels que ceux reçus des demandes ajax pour des raisons de sécurité, mais il s'occupe de ces automatiquement pour vous!

Pour que cela fonctionne, vous devez:

1) Connectez-vous avec la requête ajax à partir de laquelle vous attendez que les cookies soient retournés:

 $.ajax("https://example.com/v2/login", { method: 'POST', data: {login_id: user, password: password}, crossDomain: true, success: login_success, error: login_error }); 

2) Connectez-vous avec xhrFields: { withCredentials: true } dans la ou les requêtes ajax suivantes pour utiliser les informations d'identification enregistrées par le navigateur

 $.ajax("https://example.com/v2/whatever", { method: 'GET', xhrFields: { withCredentials: true }, crossDomain: true, success: whatever_success, error: whatever_error }); 

Le navigateur s'occupe de ces cookies pour vous, même s'ils ne sont pas lisibles par les en- headers ni le document.cookie

Voir ma réponse ici: Comment obtenir un cookie à partir d'une réponse AJAX?