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 :
- 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?