Skip to content

Commit c933d03

Browse files
committed
Address gorhill#32
From onHeadersReceived, ignore all CSP changes besides ‘script-src’ (Safari has no websockets/workers)
1 parent 1335bfc commit c933d03

File tree

1 file changed

+21
-16
lines changed

1 file changed

+21
-16
lines changed

platform/safari/vapi-background.js

Lines changed: 21 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1028,28 +1028,33 @@ vAPI.net.registerListeners = function() {
10281028
onBeforeRequestClient = onBeforeRequest.callback,
10291029
onHeadersReceivedClient = vAPI.net.onHeadersReceived.callback;
10301030

1031+
// https://github.com/el1t/uBlock-Safari/issues/32
1032+
// Ignore websocket/webworker directives
1033+
var shouldBlockResponseHeader = /script-src/;
1034+
10311035
var onBeforeRequestAdapter = function(e) {
10321036
if ( e.name !== 'canLoad' ) {
10331037
return;
10341038
}
10351039
e.stopPropagation && e.stopPropagation();
1036-
if ( e.message.type === 'main_frame' ) {
1037-
vAPI.tabs.onNavigation({
1038-
url: e.message.url,
1039-
frameId: 0,
1040-
tabId: vAPI.tabs.getTabId(e.target).toString()
1041-
});
1042-
e.message.hostname = µb.URI.hostnameFromURI(e.message.url);
1043-
e.message.tabId = vAPI.tabs.getTabId(e.target);
1044-
e.message.responseHeaders = [];
1045-
onBeforeRequestClient(e.message);
1046-
var blockVerdict = onHeadersReceivedClient(e.message);
1047-
e.message = {
1048-
shouldBlock: blockVerdict && blockVerdict.responseHeaders
1049-
};
1050-
return;
1051-
}
10521040
switch ( e.message.type ) {
1041+
case 'main_frame':
1042+
vAPI.tabs.onNavigation({
1043+
url: e.message.url,
1044+
frameId: 0,
1045+
tabId: vAPI.tabs.getTabId(e.target).toString()
1046+
});
1047+
e.message.hostname = µb.URI.hostnameFromURI(e.message.url);
1048+
e.message.tabId = vAPI.tabs.getTabId(e.target);
1049+
e.message.responseHeaders = [];
1050+
onBeforeRequestClient(e.message);
1051+
var blockVerdict = onHeadersReceivedClient(e.message);
1052+
blockVerdict = blockVerdict && blockVerdict.responseHeaders && blockVerdict.responseHeaders[0] &&
1053+
shouldBlockResponseHeader.test(blockVerdict.responseHeaders[0].value);
1054+
e.message = {
1055+
shouldBlock: blockVerdict === true
1056+
};
1057+
return;
10531058
case 'popup':
10541059
var openerTabId = vAPI.tabs.getTabId(e.target).toString();
10551060
var shouldBlock = !!vAPI.tabs.onPopupUpdated('preempt', openerTabId, e.message.url);

0 commit comments

Comments
 (0)