javascript - ejemplo - xmlhttprequest post json
¿Cómo configuro una cookie(encabezado) con XMLHttpRequest en JavaScript? (5)
Estoy tratando de establecer una cookie en una solicitud XSS usando XMLHttpRequest.
Encontré la especificación XMLHttpRequest , y la sección 4.6.2-5 parece sugerir que no se permite la configuración de Cookie, Cookie2 y algunos otros encabezados, pero esperaba que hubiera algún problema.
El código de Mi (jQuery) está debajo, pero la consulta resultante falla porque la cookie NO está establecida.
$.ajax( {
type : "POST",
url : URL,
data: SOAP_INBOX_MAIL_QUERY,
dataType : "xml",
async: false,
beforeSend : function(xhr) {
var cookie = credentials["COOKIE"];
console.info( "adding cookie: "+ cookie );
xhr.setRequestHeader(''Cookie'', cookie);
},
success : function(data, textStatus, xmLHttpRequest){
},
error : function(xhr, ajaxOptions, thrownError) {
credentials = null;
}
});
Esto puede hacerse. Necesitas lo siguiente en la llamada $ .ajax:
xhrFields: {
withCredentials: true
}
(Consulte la documentación de jQuery), y también necesitará el sitio al que está realizando la solicitud para admitir CORS (al menos tendrán que permitirle el origen y también configurar el encabezado HTTP de Access-Control-Allow-Credentials
para true
).
No hay duda de que funciona. Puede hacerlo a través de HTTPS, con Autenticación básica, etc. jQuery enviará todo (el encabezado de autenticación, las cookies) si se lo indica a (xhrFields) y el sitio proporciona los encabezados CORS correctos. ¡No te rindas!
Por razones de seguridad, no podrá modificar el encabezado durante una petición XMLHTTP.
Si configura la cookie utilizando document.cookie, cuando envíe la solicitud, el encabezado de la cookie la incluirá.
Si realiza su solicitud en el mismo dominio que el código jquery, puede usar el complemento de cookies de jquery
https://developer.mozilla.org/En/Server-Side_Access_Control
permitirle el origen y también establecer el encabezado HTTP Access-Control-Allow-Credentials en verdadero