javascript - obtener - Obtenga y almacene cookies(de Set-Cookie) de una respuesta POST de AJAX
obtener valor de una cookie javascript (2)
Tengo un código POST jQuery AJAX simple:
$.ajax({
type: "POST",
url: AppConstants.URLs.PROXY,
data: message,
xhrFields: {
withCredentials: true
},
success: function(data, status, xhr) {
console.log("Cookie: " + xhr.getResponseHeader("Set-Cookie"));
}
});
y deseo obtener la cookie y guardarla usando cookies-js .
Pero de acuerdo con http://www.w3.org/TR/XMLHttpRequest/#the-getallresponseheaders%28%29-method :
- Devuelva todos los encabezados de respuesta, excepto los encabezados que coinciden entre mayúsculas y minúsculas para Set-Cookie o Set-Cookie2 , como una sola cadena, con cada línea de encabezado separada por un par U + 000D CR U + 000A LF, excluyendo la línea de estado, y con cada nombre de encabezado y valor de encabezado separados por un par U + 003A COLON U + 0020 SPACE.
Usando la herramienta de red en Chrome, "Set-Cookie" es visible en los encabezados de Response.
También verifiqué que el encabezado "Set-Cookie" aparece usando
curl
.
¿Qué debo hacer para guardar la cookie en mi aplicación front-end? Además, mi aplicación se ejecuta solo en https .
Con mucho gusto proporcionaré más detalles a pedido.
El navegador no puede dar acceso a cookies de terceros como las recibidas de las solicitudes de ajax por razones de seguridad, sin embargo , se encarga de ellas automáticamente.
Para que esto funcione necesitas:
1) inicie sesión con la solicitud ajax de la que espera que se devuelvan las cookies:
$.ajax("https://example.com/v2/login", {
method: ''POST'',
data: {login_id: user, password: password},
crossDomain: true,
success: login_success,
error: login_error
});
2) Conéctese con
xhrFields: { withCredentials: true }
en las siguientes solicitudes de ajax para usar las credenciales guardadas por el navegador
$.ajax("https://example.com/v2/whatever", {
method: ''GET'',
xhrFields: { withCredentials: true },
crossDomain: true,
success: whatever_success,
error: whatever_error
});
El navegador se encarga de estas cookies por usted, aunque no se pueden leer desde los
headers
ni desde el
document.cookie
vea mi respuesta aquí: ¿Cómo obtener una cookie de una respuesta AJAX?
No puede obtener los datos de cookies en su JS. La API no te lo permitirá.
¿Qué debo hacer para guardar la cookie en mi aplicación front-end?
Simplemente configure el encabezado
Set-Cookie
en la respuesta del código del lado del servidor.
El navegador debería guardarlo automáticamente.
Como desarrollador, es posible que pueda inspeccionar el valor de las cookies utilizando "Herramientas para desarrolladores".
Y la misma cookie se enviará en solicitudes posteriores al mismo dominio, hasta que caduque la cookie.