chrome.webRequest.onBeforeSendHeaders установить cookie из хранилища?

Я работаю над веб-расширением, у меня есть базовые знания в "VanillaJS", и последние 2 дня я пытаюсь заставить его работать: я хочу добавить пользовательское значение в заголовок файла cookie для конкретного запроса. Значение сохраняется с помощью chrome.storage.sync.set. Значение выводится обратно, но не отправляется вперед в запросе.

Мой манифест.json:

{
 "manifest_version": 2,
 "name": "My Extension",
 "version": "1.0.0",

  "background": {
    "scripts" : ["background.js"]
  },

 "permissions": [
 "<all_urls>",  /* for later use */
 "storage",
 "webRequest",
 "webRequestBlocking" 
 ]
}

Мой background.js:

chrome.storage.sync.set({ "asym": "; param=value;" }, function() {
   alert("set"); // or console.log
}); 

function gAsyVal(callback) {
chrome.storage.sync.get(["asym"], function(obj) {
    callback(obj.asym);
});
}

chrome.webRequest.onBeforeSendHeaders.addListener(
function(info) {
    var Headers = info.requestHeaders;

    for (var i = 0; i < Headers.length; ++i) {
        if (Headers[i].name === 'Cookie') {
                gAsyVal(pAsyVal);
                function pAsyVal(val) {
                    Headers[i].value = Headers[i].value + val;
                    alert(Headers[i].value); //I see the final cookie but in the end is blank 
                }
            break;
        }
    }
    return { requestHeaders: Headers };
}, { urls: ["https://www.httpwatch.com/httpgallery/cookies/"] }, ["blocking", "requestHeaders"]);

Я знаю, что такое асинхронная функция, но не знаю, как реализовать ее в моем случае, потому что у меня недостаточно знаний. Я работаю в Google Chrome 63.0.3239.132/64-bit.

Спасибо за ваши увлечения!

0 ответов

Другие вопросы по тегам