5

Estoy intentando crear una extensión de Chrome para ayudarme a comprender la API webRequest de Chrome al replicar lo que se hace con this answer pero sin la porción experimental del espacio de nombres, que ya no es necesaria dado que webRequest es ahora en el maletero de Chrome.Reenvío simple usando la API webRequest de Google Chrome

En mi página de fondo que tiene el código:

<!DOCTYPE html> 
<html> 
    <head> 
    <script> 
function interceptRequest(request) { 
    return { redirectUrl: 'http://www.yahoo.com' } 
} 
chrome.webRequest.onBeforeRequest.addListener(interceptRequest, { urls: ['*://*.google.com/*'] }, ['blocking']); 
    </script> 
    </head><body></body> 
</html> 

En mi archivo de manifiesto que tengo:

{ 
    "name": "My Extension", 
    "version": "0.1", 
    "background_page": "background.html", 
    "permissions" : [ 
    "webRequest", 
    "webRequestBlocking", 
    "*://*/*" 
    ] 
} 

Basado en el pedido previamente pregunta, debe transmitirse a las http://www.yahoo.com cuando accedo https://www.google.com y mi extensión se carga, sin embargo, cargas https://www.google.com sin ningún efecto de reenvío. ¿Qué debo hacer para simplemente reenviar un usuario de un URI a otro utilizando la API webRequest en Chrome?

+0

Eso es extraño. Lo único que puedo pensar es asegurarme de que no esté cargando ningún XHR síncrono o que incluya ninguna etiqueta de script de recursos en línea en su página de fondo, desde los documentos de Chrome. – gengkev

Respuesta

3

Su patrón de concordancia de url no es correcto. Sólo hay que añadir una barra final:

{urls: ['https://www.google.com/']} 

Alternativamente, se puede utilizar: '*: //www.google.com/' para que coincida con todos los protocolos, '*: // www. google.com/*' para que coincida más allá de sólo el dominio, y '*: //*.google.com/*' para que coincida con todos los subdominios, protocolos y caminos, etc.

Ver: http://code.google.com/chrome/extensions/trunk/match_patterns.html

+0

Gracias por los comentarios, pero ninguna de estas soluciones hizo que el navegador se reenviara a Yahoo. ¿Ves algo más mal con lo anterior o tal vez algo que no incluí? –

+1

Creé una extensión con su código y está funcionando bien para mí después de poner una barra inclinada en el campo 'urls' como se describe en mi comentario anterior. Lo único que noté es 'content_scripts' en su archivo de manifiesto ... ¿tiene un archivo' content.js'? No lo necesita para esta funcionalidad. ¿Son correctas todas sus rutas (background.html y content.js están en la raíz de su extensión)? Además, envuelva las etiquetas '' alrededor de su código JS en background.html (asumí que estaba empaquetado, es un archivo html, después de todo, no es un archivo js). – rgthree

+0

Incluso con la adición de '/' y la exclusión de content.js del manifiesto, no pude hacer que la página se reenviara al acceder a http://www.google.com. He actualizado la fuente de mis archivos de arriba para que sea más completa (ahora contienen todos los contenidos de los archivos) y para eliminar elementos superfluos en el manifiesto. ¿Se destaca algo en los archivos anteriores que se desvía de la versión que creó que es funcional? Estoy realmente interesado en hacer que esto funcione. –

Cuestiones relacionadas