gpt4 book ai didi

javascript - 如何检测浏览器扩展是否阻止了 HTTP 请求?

转载 作者:行者123 更新时间:2023-12-04 10:43:15 27 4
gpt4 key购买 nike

我试图检测用户是否在其浏览器中使用某种扩展程序,这可能会阻止我的网站正常工作,如果是,则为用户显示一条消息。
我正在使用名为 uMatrix 的扩展进行测试,但还有其他人采用类似的方法。
我的问题是,这种扩展会阻止我的 HTTP 请求,但不会返回正确的状态代码(如 403、404、500 等)。相反,当我 catch我的请求,我只是得到一个

Error: Network Error

at [my file name and line number here]

at XMLHttpRequest.handleError (xhr.js:83)


我相信在其他情况下也会抛出同样的错误,比如没有互联网连接,所以我不能假设这个 Network Error意味着用户有一个“HTTP 请求拦截器”。
我在 this thread 上阅读了很多关于识别 AdsBlocker 的信息。和其他地方,但我认为它不适用于我的问题。
关于如何识别用户阻止我的 HTTP 请求的任何想法? (有意或通过浏览器扩展)

最佳答案

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

我将 Axios 用于我的 API 请求,我在这里找到了这个线程:

https://github.com/axios/axios/issues/383#issuecomment-234079506

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

我的最终代码是这样的:

// 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
}
})

关于javascript - 如何检测浏览器扩展是否阻止了 HTTP 请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59832989/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com