Tengo el siguiente código:
chrome.webRequest.onBeforeSendHeaders.addListener(function (data){ for (let header of data.requestHeaders) { if (header.name === "User-Agent") { chrome.storage.sync.get({pua: "Non-Set"}, function (result) { data.requestHeaders[data.requestHeaders.indexOf(header)].value = result.pua; }) } } return {requestHeaders:data.requestHeaders} }, {urls: ["<all_urls>"]}, ["requestHeaders", "blocking", "extraHeaders"])Se supone que obtiene el valor de la opción que establece el usuario y lo devuelve como el encabezado del agente de usuario, ¡pero no funciona en absoluto! ¡Usé netcat y mi agente de usuario es normal!
Sin embargo, si codifico el valor del encabezado, ¡funciona! Me estoy enojando mucho.
Intenté usar new Promise y esperarlo, ¡pero aún así no funcionó! ¿Cómo puedo hacer esto?
Dado que chrome.storage.sync.get() es asíncrono, no hay forma de garantizar la devolución de llamada de addEventListner después de ejecutar la devolución de llamada de chrome.storage.sync.get() .
La alternativa es que la devolución de llamada de addEventListner siempre cancele la solicitud y envíe la solicitud modificada en la devolución de llamada de chrome.storage.sync.get() .