Interceptar XMLHttpSolicitar y modificar responseText
Estoy intentando crear un script que actuará como un proxy / envoltorio para el nativoXMLHttpRequest
objeto que me permite interceptarlo, modificar el texto de respuesta y volver al evento original onreadystatechange.
El contexto es, si los datos que la aplicación está tratando de recibir ya están disponibles en el almacenamiento local, para abortar elXMLHttpRequest
y vuelva a pasar los datos almacenados localmente a los métodos de devolución de llamadas de éxito / fracaso de las aplicaciones. Supongamos que no tengo control sobre las aplicaciones existentes de los métodos de devolución de llamada AJAX.
Originalmente había intentado la siguiente idea ...
var send = XMLHttpRequest.prototype.send;
XMLHttpRequest.prototype.send = function(data){
//Do some stuff in here to modify the responseText
send.call(this, data);
};
Pero como ya he establecido, el texto de respuesta es de solo lectura.
Luego intenté dar un paso atrás, escribiendo mi propio proxy nativo completo paraXMLHttpRequest
, terminando finalmente escribiendo mi propia versión de los métodos nativos. Similar a lo que se discute aquí ...
http://www.ilinsky.com/articles/XMLHttpRequest/#implementation-wrapping
Pero rápidamente se volvió confuso, y todavía tiene la dificultad de devolver los datos modificados al originalonReadyStateChange
método.
¿Alguna sugerencia? ¿Es esto posible?