Estoy tratando de editar cookie para todas las llamadas API usando webRequest desde una extensión de navegador cruzado (compatible con Chrome y Firefox) que estoy creando.
El siguiente es el código:
chrome.webRequest.onBeforeSendHeaders.addListener( data => { /* cookie manipulation logic */ }, { urls: ['https://*/*'] }, ['blocking', 'requestHeaders', 'extraHeaders'] ); Problema: en Chrome, el código funciona con extraHeaders y en Firefox el mismo código funciona solo si se eliminan extraHeaders . ¿Cómo puedo hacer que funcione en ambos navegadores?
A continuación se muestra la referencia del documento del navegador para Chrome y Firefox.
Chrome: la documentación de Chrome establece que se necesitan extraHeaders si queremos manipular las cookies. Imagen de referencia a continuación. Enlace de referencia: Enlace
Firefox:
La documentación de Firefox no dice que se use ninguna especificación adicional para manipular las cookies. En su lugar, da error cuando extraHeaders está presente en el tercer argumento de addListener.
La API expone todas las constantes predefinidas en los objetos chrome.webRequest.OnXXXXXXXXX para cada evento, por lo que solo en el nuevo Chrome, dichos objetos tendrán una clave EXTRA_HEADERS con un valor extraHeaders , mientras que en Firefox y Chrome antiguo no estará definido, lo que se puede filtrar a través de un filter() :
chrome.webRequest.onBeforeSendHeaders.addListener( listenerFunc, { urls: ['*://*/*'] }, ['blocking', 'requestHeaders', chrome.webRequest.OnBeforeSendHeadersOptions.EXTRA_HEADERS].filter(Boolean) );