我有一个检测网页是否在互联网或内联网上提供服务的要求,即假设url为https://accessibleanyway.com,手机是连接到工作wifi还是连接到其他东西,比如他们的家庭wifi或电话网络?
有什么不同的方法可以做到这一点?
(1) 使用WebRTC获取本地ip地址。未得到广泛支持的
(2) 尝试使用jsonp/cors/iframe 访问本地网页
2的问题是网页是https,本地资源可能是http,这在IE afaik中是做不到的。如果我让本地资源https,那么它是通过自证书的,这意味着在手机上安装CA(你能再为内联网购买证书吗?)
有什么建议吗?
(2)的问题是同一个页面试图使用http和https,即使使用iframe也会出现问题。
相反,您可以从http加载页面开始,使用iframe访问本地资源,只有在intranet上才能访问该资源,jsonp可以很好地实现这一点。一旦成功或失败,请在querystring中使用一些令牌重定向到起始页,以指示您是否在intranet上
NB如果你在同一个网站上(验证cookie最初可见),从http跳到https可能会有一些安全问题,但我认为如果你要去另一个也没问题
显然,令牌需要一些安全性,否则用户可以只生成自己的令牌,但这是另一回事,取决于各个设置。它显然必须由服务器调用生成,否则有人可能只读取客户端代码。
注意:我认为IP地址方法永远不会起作用,因为在你去那里之前,你无法知道公司内部网的设置是什么样子的,所以这不是一个通用的答案