Quiero reaccionar a algunos eventos que desencadena un tercero en mi sitio. Esos eventos son solicitudes Fetch/XHR, me gustaría recibir una notificación cuando ocurra una solicitud "observada" (supongo que los vería en función de la "URL de solicitud"), y me gustaría leer sus encabezados de solicitud/respuesta y carga útil.
Nunca he visto que se haga eso antes, ¿es posible?
El navegador está al tanto de todas las solicitudes que suceden, pero no estoy seguro de que podamos leer esto, ¿verdad?
Eventualmente, espero lograr un observador que active mi propio código cuando se llame a algunos puntos finales, mientras reutiliza los datos enviados por esas solicitudes. Espero detectar CUÁNDO se llama a un punto final en particular y CUÁL es la respuesta, de modo que pueda usarlo para mis propias necesidades (sin necesidad de realizar otra solicitud idéntica)
No estoy seguro de si será posible leer los datos, descubrí que es posible reaccionar a las solicitudes de recuperación con la ayuda de Resource Timing (ver https://www.w3.org/TR/resource-timing/ )
Por ejemplo, puede crear una función de decorador para buscar:
const origFetch = fetch; window.fetch = function(...args) { console.log(args); return origFetch.apply(this, args); } También puede crear un decorador para la función Response.prototype.json .
Es posible usar la biblioteca integrada de WebRequest. El siguiente ejemplo es específico para el tiempo de ejecución de Chrome Extension, pero también se puede hacer algo similar para los navegadores.
Para Chrome Extensions, debe ejecutarse como Service Worker (p. ej., background.js)*
chrome.webRequest.onBeforeSendHeaders.addListener( (requestHeadersDetails) => { console.log('requestHeadersDetails', requestHeadersDetails); }, { urls: ['https://*'], }, [ 'requestHeaders', 'extraHeaders', ], );Consulte https://developer.chrome.com/docs/extensions/reference/webRequest/#event-onBeforeRequest y https://developer.chrome.com/docs/extensions/reference/webRequest/#event-onBeforeSendHeaders (ambos son muy similar)
Sin embargo, no encontré una manera de reutilizar los datos que se obtuvieron. Pero al menos me notifican cuando se envía una solicitud.