2012-06-11 29 views
15

creo que he entendido mal la gestión de cookies con xmlhttprequest. Tengo un servidor que responde al XMLHttpRequest hecho en JavaScript, mi servidor devuelve Allow-Control-Access-Origin, Access-Control-Allow-Headers, Access-Control-Expose-Headers y Access-Control-Allow-Credentials encabezados con el valor correcto.xmlhttprequest y set-cookie & cookie

Estoy haciendo una Autenticación Digest en un servidor con javascript, no hay problema en eso, recibo el encabezado WWW-Authenticate del servidor, proceso y envío al servidor el encabezado de Autorización con toda la respuesta resumida y todo está bien . El problema es que, cuando el desafío digestivo es exitoso, mi servidor devuelve un encabezado Set-Cookie, tengo que obtenerlo y agregarlo al resto de mi solicitud xhr. El navegador (usando cromo y cromo) no me deja acceder a la cabecera haciendo:

xhr.getResponseHeader("Set-Cookie"); 

Ok, en el XMLHTTPREQUEST Level 2 que dice: "Devuelve todos los encabezados de la respuesta, con la excepción de aquellos cuyo campo nombre es Set-Cookie o Set-Cookie2 " Ok, entonces no puedo tomarlo, pero ¿cuáles son las formas? Uso de Chrome Api para las cookies (en el momento en que no leo nada), pero quiero hacerlo de la manera más estándar posible. Con la :

xhr.withCredentials = true; 

significa que el navegador obtener automáticamente el conjunto de cookies y enviar en las cabeceras de cookies ??

Respuesta

16

De CORS especificación http://www.w3.org/TR/cors/#make-a-request-steps:

Cada vez que el maquillaje se aplica una solicitud de medidas, buscar el URL de solicitud de origen fuente de origen con el indicador de redireccionamiento manual, y la bandera bloquear las cookies establecer si el omitir la bandera de credenciales Está establecido. Utilice el método de solicitud de método, cuerpo de entidad de solicitud de cuerpo de entidad, incluidos los encabezados de solicitud de autor, e incluya credenciales de usuario si el indicador de omisión de credenciales está desactivado. Excluya el encabezado Referer si el origen de origen es un identificador único global.

Como dice correctamente: las cookies se agregan mediante el navegador si usa withCredentials.

+0

¿puede confirmar que en este caso están enviando cookies generadas y configuradas por el sitio A (página principal) al sitio B (destino Ajax)? –

+0

No. Solo las cookies que se originaron del dominio B se enviarán allí. Por otro lado, el 'Referer' se enviará con el URI de origen del sitio A y, si tuviera algunos parámetros HTTP, serán visibles para el sitio B. –