Неотдавна разбрах, че някои разширения за блокиране на реклами (като adBlocker plus) блокират някои Ajax повиквания. Получавам тази грешка в конзолата:
GET http://localhost/prj/conn.php?q=users/list/ net::ERR_BLOCKED_BY_CLIENT
Защо блокира някои Ajax повиквания, но не и други, и каква е причината за това? Има ли някакво друго решение, освен да се каже на потребителя да изключи adblocker?
Рекламните блокери обикновено имат някакви правила, т.е. сравняват URI с някакъв вид изрази (понякога сравняват и DOM с изрази, но това не е от значение в този случай).
Наличието на правила и изрази, които оперират само с малка част от текста (URI), е склонно да създаде някои фалшиво положителни резултати...
Освен че можете да инструктирате потребителите си да забранят разширенията си (поне на вашия сайт), можете също така да получите разширението и да проверите кое от правилата/изразите е блокирало вашите неща, при условие че разширението предоставя достатъчно подробности за това. След като установите виновника, можете да се опитате да избегнете задействането на правилото, като използвате различни URI, да докладвате правилото като неправилно или прекалено широко на екипа, който го е създал, или и двете. Проверете в документацията за конкретната добавка как да направите това.
Например AdBlock Plus има изглед Блокирани елементи, който показва всички блокирани елементи на дадена страница и правилата, които са задействали блокирането. И тези елементи също включват XHR заявки.
Ако URL адресът ви съдържа думи като "advert", "ad", "doubleclick", "click" или нещо подобно...
Например:
GET googleads.g.doubleclick.net/pagead/id
static.doubleclick.net/instream/ad_status.js
...Тогава рекламният блокер ще го блокира.
Открих, че ако в името на файла има 300
, AdBlock блокира страницата и изхвърля грешка ERR_BLOCKED_BY_CLIENT
.