最近我意识到,一些广告拦截器扩展(如adblocker plus)阻止了一些Ajax调用。我在控制台上得到这个错误:

GET http://localhost/prj/conn.php?q=users/list/ net::ERR_BLOCKED_BY_CLIENT 

为什么它会阻止一些Ajax调用,而不是其他的,是什么原因造成的?除了告诉用户关闭广告拦截器,还有什么解决办法吗?


广告拦截器通常有一些规则,即它们根据某种类型的表达式匹配uri(有时它们也根据表达式匹配DOM,在这种情况下这并不重要)。

只对一小部分文本(URI)进行操作的规则和表达式很容易产生一些误报……

除了指示你的用户禁用他们的扩展(至少在你的网站上),你还可以获得扩展,并测试哪些规则/表达式阻止了你的东西,只要扩展提供了足够的细节。一旦您确定了罪魁祸首,您可以尝试通过使用不同的uri来避免触发规则,或者向创建规则的团队报告规则不正确或过于宽泛,或者两者兼有。 查看文档中关于如何做到这一点的特定附加组件。

例如,AdBlock Plus有一个可阻止项目视图,显示页面上所有被阻止的项目和触发阻止的规则。这些项目还包括XHR请求。


我发现如果文件名中有300,AdBlock会阻塞页面并抛出ERR_BLOCKED_BY_CLIENT错误。


如果你的URL包含“广告”,“广告”,“双击”,“点击”,或类似的东西……

例如:

得到googleads.g.doubleclick.net/pagead/id static.doubleclick.net/instream/ad_status.js

然后广告拦截器就会屏蔽它。


在我的情况下,它是一个Chrome扩展和Firefox插件由Avira称为“Avira浏览器安全”。我使用1.7.4版本时遇到了问题。 在我的具体情况下,我想登录一个名为gliffy.com的网站来制作图表,但登录后我得到了一个空白页面。如果你在Chrome中使用F12(控制台),你可以看到所有这些ERR_BLOCKED_BY_CLIENT(和其他)错误。


我发现一个情况是,如果你的url包含关键字横幅,它也会被阻止。


将PrivacyBadger添加到潜在原因列表中


Opera Blocker和其他人检查网络中的所有文件/url。然后与列表进行比较。它是EasyPrivacy和EasyList。如果您的文件/url在此,您将被禁止。祝你好运。

所以…我发现所有的addBlockers过滤器列表!


正如这里所解释的,除了执行广告或脚本阻止的多个扩展名之外,您可能会意识到这可能会通过以下文件名发生:

特别是在AdBlock Plus中,字符串“-300x600”会导致资源加载失败 ERR_BLOCKED_BY_CLIENT问题。

如图所示,一些图片因为名称中的“-300x600”模式而被屏蔽,这种特定的文本模式与AdBlock Plus中的表达式列表模式相匹配。


在我的案例中,它不是广告拦截器,而是Bitdefender反跟踪器。禁用它,然后你都好。


我的哨兵呼叫失败了,在brave浏览器上禁用brave广告屏蔽确实为我解决了这个问题。


如果有任何广告拦截器(Brave浏览器使用默认拦截器),关闭它。这对我很有效


如果你在无头模式下运行chrome浏览器(例如与Puppeteer或Ferrum), url白名单和请求不匹配列表,也会发生此错误。


只是切换一些URL查询参数的顺序,为我解决了这个问题(所以显然uBlock Origin广告拦截规则不是很健壮)。


我也面临着同样的问题,我正在使用勇敢浏览器,禁用保护网站,我面临的问题工作


谢谢你的回答!他们让我找到了一个解决方案:

我通过使用第三方服务器来包装我的请求。 看看吧: https://codetabs.com/cors-proxy/cors-proxy.html

GET "https://api.codetabs.com/v1/proxy?quest=your_blocked_url"

当然,最好是用您自己的服务器来封装它。