2012-07-21 15 views
14

Soy consciente de que chrome.webRequest.onBeforeRequest permite que una solicitud sea interceptada, analizada y bloqueada, pero solo permite el acceso a los encabezados de solicitud, y no al cuerpo de la solicitud (hasta donde yo sé).Interceptar cuerpo de solicitud HTTP desde la extensión de cromo

Caso de uso de ejemplo: pensar en interceptar valores de formulario.

Parece que hay una propuesta de cambio de API here sugiriendo exactamente esto.

¿Hay alguna otra manera de lograr esto?

Gracias.

+2

Interceptar cuerpos respuesta/solicitud no es posible en la actualidad el uso de la incorporada en el API de Chrome. La [parte relevante del último código fuente] (http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/extensions/api/web_request/) no contiene ningún signo de tal característica. Si no puede vivir sin la función, puede explorar las [posibilidades] (http://stackoverflow.com/tags/npapi/info) de [complementos de NPAPI] (http://code.google.com/chrome). /extensions/npapi.html) o inicie un servidor (local) y redirija las solicitudes específicas a su servidor local. –

+0

Eso es desafortunado. NPAPI parece exagerado para mis necesidades. Gracias por la respuesta sin embargo. – Ped

Respuesta

9

Esta funcionalidad se ha añadido a la API ahora, ver la documentation.

Con el fin de acceder al cuerpo lo que necesita hacer lo siguiente:

chrome.webRequest.onBeforeRequest.addListener(
    function(details) 
    { 
     console.log(details.requestBody); 
    }, 
    {urls: ["https://myurlhere.com/*"]}, 
    ['requestBody'] 
); 
+0

Gee, eso es increíble. Gracias por el ping. – Ped

+1

Para mí siempre devuelve indefinido. Tal vez solo para el canal beta? – BeauCielBleu

+0

@BeauCielBleu puede que no haya un cuerpo de solicitud. Intente registrar la URL en su lugar: 'console.log (" url: "+ details.url);' – georgiecasey

2

Si bien puede no ser capaz de interceptar, puede utilizar el enfoque estándar para AJAX cinta adhesiva ella. En lugar de hacer que la solicitud href vea si puede realizar una llamada asincrónica y guardarla en un objeto HTML que no se presente. A continuación, raspe/lea/analice/sea cual sea el criterio de su cuerpo, y si pasa, vuelva a colocar ese objeto corporal en la ventana/página actual.

almacenar el contenido en un elemento suprimido y luego usar ese mismo elemento de contenido le permitiría evitar hacer llamadas duplicadas. La desventaja es que obtendrás todo el contenido de cosas que no terminarás usando. Eso puede o no ser un problema de rendimiento de ancho de banda/velocidad.

Cuestiones relacionadas