Skip to content

Commit 2a5c1f6

Browse files
committed
Extended origin normalization to top-level documents (thanks NDevTK for reporting).
1 parent c22eafc commit 2a5c1f6

1 file changed

Lines changed: 16 additions & 8 deletions

File tree

src/bg/RequestGuard.js

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -356,27 +356,35 @@ var RequestGuard = (() => {
356356
}
357357

358358
let normalizeRequest = request => {
359+
360+
function fakeOriginFromTab({tabId} = request) {
361+
let tab = tabId !== -1 && TabCache.get(tabId);
362+
if (tab) {
363+
return request.initiator = request.originUrl = request.documentUrl = tab.url;
364+
}
365+
}
366+
359367
if ("initiator" in request && !("originUrl" in request)) {
360-
if (request.frameId > 0 && request.initiator === "null") {
361-
// Chromium sandboxed frame?
362-
try {
363-
request.initiator = request.originUrl = request.documentUrl = TabCache.get(request.tabId).url;
364-
} catch (e) {}
368+
if (request.initiator === "null") {
369+
// Chromium sandboxed content?
370+
fakeOriginFromTab();
365371
}
366372
request.originUrl = request.initiator;
367373
if (request.type !== "main_frame" && !("documentUrl" in request)) {
368374
request.documentUrl = request.initiator;
369375
}
370376
}
371-
if ("frameAncestors" in request && (!request.originUrl || request.documentUrl) && request.frameAncestors.length > 0) {
372-
// Gecko sandboxed frame?
377+
if ("frameAncestors" in request && (!request.originUrl || request.documentUrl)) {
378+
// Gecko sandboxed content?
373379
for (let f of request.frameAncestors) {
374380
if (f.url !== "null" && !f.url.startsWith("moz-nullprincipal:")) {
375381
request.originUrl = request.documentUrl = f.url;
376382
break;
377383
}
378384
}
379-
385+
if (!request.originUrl) {
386+
fakeOriginFromTab();
387+
}
380388
}
381389
};
382390

0 commit comments

Comments
 (0)