1
0
mirror of https://github.com/gorhill/uBlock.git synced 2024-09-04 18:19:38 +02:00
This commit is contained in:
gorhill 2015-01-17 15:03:33 -05:00
parent e6707fe8b1
commit 470eef85f3

View File

@ -255,12 +255,39 @@ var onHeadersReceived = function(details) {
pageStore.skipLocalMirroring = headerValue(details.responseHeaders, 'content-security-policy'); pageStore.skipLocalMirroring = headerValue(details.responseHeaders, 'content-security-policy');
} }
var requestURL = details.url;
var requestHostname = µb.URI.hostnameFromURI(requestURL);
var requestDomain = µb.URI.domainFromHostname(requestHostname);
// https://github.com/gorhill/uBlock/issues/525
// When we are dealing with the root frame, due to fix to issue #516, it
// is likely the root frame has not been bound yet to the tab, and thus
// we could end up using the context of the previous page for filtering.
// So when the request is that of a root frame, simply create an
// artificial context, this will ensure we are properly filtering
// inline scripts.
var context;
if ( details.parentFrameId === -1 ) {
context = {
rootHostname: requestHostname,
rootDomain: requestDomain,
pageHostname: requestHostname,
pageDomain: requestDomain
};
} else {
context = pageStore;
}
// Concatenating with '{inline-script}' so that the network request cache // Concatenating with '{inline-script}' so that the network request cache
// can distinguish from the document itself // can distinguish from the document itself
pageStore.requestURL = details.url + '{inline-script}'; // The cache should do whatever it takes to not confuse same
pageStore.requestHostname = µb.URI.hostnameFromURI(details.url); // URLs-different type
pageStore.requestType = 'inline-script'; context.requestURL = requestURL + '{inline-script}';
var result = pageStore.filterRequest(pageStore); context.requestHostname = requestHostname;
context.requestDomain = requestDomain;
context.requestType = 'inline-script';
var result = pageStore.filterRequest(context);
if ( µb.isBlockResult(result) === false ) { if ( µb.isBlockResult(result) === false ) {
return; return;
} }
@ -270,7 +297,7 @@ var onHeadersReceived = function(details) {
µb.localSettings.blockedRequestCount++; µb.localSettings.blockedRequestCount++;
µb.updateBadgeAsync(tabId); µb.updateBadgeAsync(tabId);
pageStore.logBuffer.writeOne(pageStore, result); pageStore.logBuffer.writeOne(context, result);
details.responseHeaders.push({ details.responseHeaders.push({
'name': 'Content-Security-Policy', 'name': 'Content-Security-Policy',