最近,我意识到,一些adblocker扩展(例如adBlocker plus)会阻止一些Ajax调用。我在控制台上收到该错误:
GET http://localhost/prj/conn.php?q=users/list/ net::ERR_BLOCKED_BY_CLIENT
为什么它阻止某些Ajax调用而不阻止其他Ajax调用,是什么原因造成的?除了告诉用户关闭adblocker之外,还有其他解决方法吗?
AdBlocker通常具有一些规则,即,它们将URI与某种类型的表达式匹配(有时,它们也将DOM与表达式匹配),在这种情况下并不重要。
具有仅对少量文本(URI)起作用的规则和表达式就容易产生一些假阳性…
除了指示用户禁用扩展名(至少在您的站点上),您还可以获取扩展名并测试哪个规则/表达式阻止了您的工作,前提是该扩展名提供了足够的详细信息。一旦确定了罪魁祸首,您可以尝试通过使用不同的URI来避免触发规则,或者向创建它的团队报告该规则不正确或过于宽泛,或者两者兼而有之。检查文档以获取有关如何执行此操作的特定加载项。
例如,AdBlock Plus具有“可阻止 项目” 视图,该视图显示页面上所有被阻止的项目以及触发该阻止的规则。这些项目还包括XHR请求。