inject.preload.js failing to load a file in chrome from my dev environment

Yevgeniy Afanasyev picture Yevgeniy Afanasyev · Jun 14, 2018 · Viewed 26.7k times · Source

I use google chrome for my php/js development.

today I started to see a file that is failing to load.

file name is always different

Request URL: blob:http://random.homestead.test/4d9f984b-b8f8-4e77-97cb-4fcfd8ace348

network page says that initiator is inject.preload.js:373

if I open this file, the first line says

/*
 *This file is part of Adblock Plus <https://adblockplus.org/>,

But I have Adblock Plus disabled. I noticed that file is being loaded with success occasionally. And also noticed that this file is only requested when I have AdBlock (not AdblockPlus) active. If I have AdBlock disabled - no problem. but even if I exclude my dev site from adblock - the file download is still failing.

My question is: How can I get rid of this red line in my console log and network without entirely deactivating adblock?

I tried it on stackoverflow.com and I see the same file inject.preload.js loading same randomly named file and succeeding. the file header says:

/*
* Frame context wrapper
*
* For some edge-cases Chrome will not run content scripts inside of frames.
* Website have started to abuse this fact to access unwrapped APIs via a
* frame's contentWindow (#4586, 5207). Therefore until Chrome runs content
* scripts consistently for all frames we must take care to (re)inject our
* wrappers when the contentWindow is accessed.
*/

it started today on 14 of June 2018

Answer

combomatrix picture combomatrix · Jun 14, 2018

Looks like it is officially broken. The issue is ticketed at https://issues.adblockplus.org/ticket/6744

I tried to debug and find the exact cause, but the issue seems to be elsewhere. The JS code debugged (inject.preload.js at line 373)

document.documentElement.appendChild(script); // here, script.src is indeed a valid script
document.documentElement.removeChild(script);
URL.revokeObjectURL(url);

The script's src attribute targets a valid blob JS which is alive when this line is called!