ajax – 如何验证某个域是否可以从浏览器访问?
我们的单页应用程序嵌入来自Youtube的视频,供最终用户使用.如果用户确实可以访问Youtube域以及该域页面的内容,那么一切都很有效.
然而,我们经常遇到用户,他们对Youtube的访问权限被网络上的网络过滤器框阻止,例如https://us.smoothwall.com/web-filtering/.这里的挑战是过滤器实际上不会终止请求,它只是返回另一个页面,而不是HTTP状态200.该页面通常会说“嘿,对不起,这个内容被阻止”. 一种选择是尝试获取https://www.youtube.com/favicon.ico以证明域名是可访问的.问题是这些过滤器通常涉及一个自定义SSL证书,以允许他们检查HTTP内容(参见:https://us.smoothwall.com/ssl-filtering-white-paper/),所以我不能依赖TLS捕获与我交换的内容与不正确的证书,我会收到一个完全有效的favicon.ico文件,除了来自不同的网站.还有整个CORS问题,即从youtube.com的域名向我们的域发布XHR,这意味着如果我想获得favicon.ico,我必须采用JSONP风格.然而,即使使用普通的旧版本< img>由于CORS,我无法测试图像的内容,见Get image data in JavaScript?,所以我坚持这种方法. 是否有任何经过验证的可靠方法来处理这种情况并测试浏览器级别对特定域的可达性? 干杯. 解决方法
通常,想要很好地播放的Web代理通常使用可以检测到的其他响应头来注释HTTP会话.
因此,构建中间人检测器的一种方法可能是检查那些响应头并比较MITM后面的结果,何时不是. 许多公共网站将显示任意请求的标题; redbot就是其中之一. 所以,也许您可??以要求正在修改其内容的一方访问以下网址:youtube favicon via redbot. 一旦你收集了足够的样本,你就可以尝试建立一个探测器. 此外,一些CDN(例如,Akamai)将允许客户从其网络中的远程代理位置访问URL.这可能会提供更好的覆盖率,尽管它们不太可能落后于阻止防火墙. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |