Javascript 如何检测HTTP请求是否被浏览器扩展阻止?

Javascript 如何检测HTTP请求是否被浏览器扩展阻止?,javascript,xmlhttprequest,http-status-codes,Javascript,Xmlhttprequest,Http Status Codes,我试图检测用户是否在其浏览器中使用了某种可能会妨碍我的网站正常工作的扩展,如果是,则为用户显示一条消息 我正在使用一个名为的扩展进行测试,但是还有其他类似的方法 我的问题是,这种扩展会阻止我的HTTP请求,但不会返回正确的状态码(比如403404500等等)。相反,当我捕获我的请求时,我只得到一个 错误:网络错误 在[我的文件名和行号在这里] 位于XMLHttpRequest.handleError(xhr.js:83) 我相信在其他情况下也会抛出同样的错误,比如缺少internet连接,所以我

我试图检测用户是否在其浏览器中使用了某种可能会妨碍我的网站正常工作的扩展,如果是,则为用户显示一条消息

我正在使用一个名为的扩展进行测试,但是还有其他类似的方法

我的问题是,这种扩展会阻止我的HTTP请求,但不会返回正确的状态码(比如403404500等等)。相反,当我捕获我的请求时,我只得到一个

错误:网络错误

在[我的文件名和行号在这里]

位于XMLHttpRequest.handleError(xhr.js:83)

我相信在其他情况下也会抛出同样的错误,比如缺少internet连接,所以我不能假设这个
网络错误
意味着用户有一个“HTTP请求拦截器”

我在网上和其他地方读了很多关于识别AdsBlocker的文章,但我认为这不适用于我的问题


关于如何识别用户正在阻止我的HTTP请求,有什么想法吗?(无论是有意还是通过浏览器扩展)

我想我会在这里分享我找到的解决方案,尽管我认为这还不是最好的答案

我正在使用Axios进行API请求,我在这里发现了以下线程:

他们建议检查
响应
是否有状态(但在最新的Axios中,他们甚至不返回
响应
)。如果没有,则表示从未访问过服务器。这可能仍然意味着没有互联网连接,不一定是扩展阻止了请求。所以我调整了我的信息以涵盖这两种情况

我的最终代码是这样的:

// Note the use of "HEAD", since that will be faster than a "GET"
axios.head(server_url_for_testing).catch(function(error) {
  if (!error.response) {
    // Display my warning message
  }
})