Jak jsem doletěl na adblock při návrhu REST API

Ano, používám adblock. Stejně tak, jako v článku o měření prokliků na externí odkazy, který jsem psal zde na blogu, tak i nyní jsem na něj doletěl. Tentokrát při tvorbě REST API a volání nešťastně nazvaných metod. Aneb zas jsem o trochu chytřejší.

V jedné práci jsem řešil návrh REST API pro administraci nějakého webu. Zadání bylo jasné – vytvořit místo, kde se bude nahrávat reklama na web. Pro realizaci jsem z kvůli lenosti a pohodlí použil angular.js a volané metody jsem pojmenoval tak, jak mi rozum nakázal.

Jeden takový request na REST API vypadal například takto:

DELETE /admin/api/banner/3

Už od pohledu je jasné, co je jeho úkolem. Při odeslání má smazat banner, jehož ID je rovno třem.

A… nesmazal. Místo vytouženého výsledku mi angular vyhodil výjimku:

[Exception... "<no message>" nsresult: "0x805e0006 (<unknown>)" 
location: "JS frame :: http://some.url/admin/public/libs/angular/angular.min.js :: od/< :: line 72" data: no]

Stejně tak to (ne)funguje i u requestů, v jejichž adrese se vyskytují slova: advert, advertisement nebo cokoliv co nějak připomíná reklamu.

Může za to totiž adblock! Tedy u mě je to konkrétně českým blacklistem (Czech list), který obsahuje seznam blokovaných adres spolu s pár celkem brutálně napsanými pravidly. Je jím například *banner*, který zablokuje některé requesty jdoucí na stránky s URL obsahující slovo „banner“.

A přitom problém není jen u mě. Týká se všech, kteří používají adblock s podobným seznamem pravidel, jako já. Noční můrou pak může být zpráva od klienta, že mu z nezištných důvodů nejde polovina systému a přitom jde jen bloknuté requesty.

Takže bacha na to..

 

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *