I'm developing a web extension for Microsoft Edge; my browser is using EdgeHTML 14.14393.
I'm trying to change the User-Agent
string in the following code:
function useDifferentUserAgent() {
var obsh = browser.webRequest.onBeforeSendHeaders;
// attach my listener with filter and extraInfoSpec
obsh.addListener(
rewriteUserAgentHeader,
{ tabId: tab.id, urls: ["*://*.someurl.com/*"] },
['requestHeaders', 'blocking']
);
// now that the listener is attached, this should trigger the event, right?
browser.tabs.update(tab.id, { url: 'http://someurl.com/foo/bar' });
if (obsh.hasListener(rewriteUserAgentHeader)) {
obsh.removeListener(rewriteUserAgentHeader);
}
}
function rewriteUserAgentHeader(details) {
var headers = details.requestHeaders;
var blockingResponse = {};
for (var i = 0, l = headers.length; i < l; ++i) {
if (headers[i].name.toLowerCase() == 'user-agent') {
headers[i].value = "some other user agent string";
break;
}
}
blockingResponse.requestHeaders = headers;
return blockingResponse;
};
The browser.tabs.update()
call opens the new URL as expected, but when I put a breakpoint on the first line of rewriteUserAgentHeader
function, it never hits. I can only assume that:
- I'm doing it wrong (most likely) or
- the
update
call doesn't triggeronBeforeSendHeaders
.
Update
I found that I was missing the host permission
from my manifest.json
file - here is my updated permissions
section:
"permissions": [
"tabs",
"activeTab",
"webRequest",
"webRequestBlocking",
"*://*.someurl.com/*"
]
... but still, there is no joy in MudVille; my quest for illumination continues. My breakpoint in the event handler never hits. Any assistance, as always, is greatly appreciated.