I'm writing a Chrome extension that periodically checks a web-page on the user's behalf. To be unobtrusive, the page is loaded into an iframe on the extension's hidden background page. Is it possible to identify just the web requests made by this iframe?
My initial experiments (see below) seem to indicate that this is tricky. Getting all web requests for a particular tab is easy: you have the tabId, and can filter web requests (via the WebRequest API) with that tabId. But for a background-page iframe, it's unclear what the "tabId equivalent" identifier is, or how to use it to filter web requests.
Any thoughts?
My initial experiment details are below. The frameId value looked promising, but I don't believe it's unique across extensions.
This question has already been asked for Firefox: Identify requests originating in the hiddenDOMWindow (or one of its iframes)
== Experiment ==
As an experiment, I:
- Listened for all web requests with the WebRequest API
- Created an iframe on the extension's background page, and opened a url.
Here's a captured iframe web request:
{
"frameId": 2,
"method": "GET",
"parentFrameId": 0,
"requestId": "11988",
"tabId": -1,
"timeStamp": 1395423892612.272,
"type": "sub_frame",
"url": "http://en.wikipedia.org/wiki/Frog"
}
The tabId and parentFrameId values look suspect.
The frameId value looks promising. If we knew the frameId of the frame, could we use that to filter requests?
Possibly, but the frameId value isn't unique across browser extensions. I created another identical extension, and got its background iframe to load the same url. It generated an identical looking request, with identical frameId (for its own - but different - iframe). Also, this Chromium issue refers to "frame id collisions": https://code.google.com/p/chromium/issues/detail?id=173325