Webリクエストを特定のURLに傍受しようとしています。リクエストを送信する前にWeb拡張機能のネイティブメッセージング(非同期) 。ネイティブメッセージングは非同期であるため、ネイティブメッセージングの応答からCookie値が取得される前にWeb要求が送信されます。Web Extensionはネイティブメッセージングに連絡してリクエストクッキーの値を設定するようにWebリクエストを尋ねます
ここにコードスニペットがあります。このフローを同期させて、Cookieがロードされ、インターセプトされたWebリクエストが送信されるようにする方法。クッキーヘッダを設定するために
browser.webRequest.onBeforeRequest.addListener(
loadCookie,
{urls: ["https://some-url/*"]},
["blocking"]
);
function loadCookie(requestDetails)
{
console.log("Gettting Cookie Data for"+requestDetails.url);
var sending = browser.runtime.sendNativeMessage("native_app","getCookieData");
sending.then(onSuccess, onError);
}
function onSuccess(response)
{
console.log("Received: " + JSON.stringify(response));
setCookie(response);
}
function onError(error)
{
console.log("Error");
}
function setCookie(resp)
{
if(typeof resp != 'undefined'){
var now = new Date();
var time = Math.round(now.getTime()/1000);
var expireTime = time + 15*60;
browser.cookies.set({
url: "https://some-domain/*",
name: "req_cookie",
value: resp,
secure: true,
expirationDate: expireTime
});
}
console.log("Set a cookie");
}
あなたが傍受したいURLがページ上のリンクである場合は、マウスオーバーイベントリスナーのデータのプリフェッチを開始して、リンクがクリックされる前に準備が整うようにすることができます。 – wOxxOm
私はハイパーリンクのためにそれを行うことができますが、私はユーザーがアドレスバーにURLを入力することによって起こる通常の要求のためにそれを行う必要があります。 –