由于微信7.0版本升级了对https的安全限制,在微信7.0版本及以上版本使用http协议访问定位组件会导致定位失败。
另外ISO10也限制了非安全域的浏览器定位请求。
什么是 HTTP
HTTP 指的是超文本传输协议(HyperText Transfer Protocol)。首先,它是一个 协议 。「协议」是指计算机通信网络中两台计算机之间进行通信所必须共同遵守的规则。也就是大家事先约定好的,统一执行的标准。众所周知,HTTP 是无状态,无连接的。首先讲一下如何理解无连接。无连接指的是在 HTTP1.0 版本中,每次建立起的 TCP 连接只处理一个请求,收到客户的应答之后就立即断开链接。也就是说假如一个网页内仅有十张图片,那么需要建立-断开链接十一次。这就是无连接的含义。但是这种机制显然无法应对现在丰富的网页内容,每一个网页都包含大量的资源文件,如果每个连接仅传输一个文件就断开太过于浪费服务器资源了。所以在 HTTP1.1 中支持了持久性连接,详细点说就是在 HTTP 头部行中 Connection 字段如果为 keep-alive 的话,在传输完第一个资源后不会立即断开 TCP 连接,会稍微等待一会(5秒或服务器自定义配置的时间),如果浏览器在这个时间段内还要请求一些资源(如图片)就会继续使用这个连接进行数据的传输,超过设定的时间之后就会断开,这样就节省了多次建立-断开连接所消耗的时间和资源开销。当 Connection 的值为 close 时会立刻断开连接;那无状态是什么意思呢,就是服务器不记录任何有关客户端过去发送过的请求。每一次连接都是新的,都是你要什么资源,我给你什么资源。我不管你是谁,也不知道你是谁,更不知道你之前是否向我要过同一个资源。为什么采用无状态的机制呢,我们可以和有状态的协议作对比。有状态的协议更加复杂,服务器需要维护和记录状态信息。一旦服务器或客户端出现了故障,如重启,就会产生状态不一致的情况,状态不一致的话,就会出现错误,为了保证状态的一致性,还需要重新维护状态记录。举一个例子,我向服务器请求了一个资源,服务器记录了我已经请求过了这个资源并发送给我,过了一小会,这个资源被我不小心删了,我需要重新向服务器请求这个资源,但服务器并不理我,因为在他的记录中,我刚请求过这个资源,他已经发送过了,不会再发一遍了。这时候就出现了问题,为了让他再发一份,我还需要跟服务器协商,说我现在的确没有这个资源,我这个资源因为某种原因没有了,你在给我重新发一份吧,只有这样,服务器才会更新一下状态,重新给我发一份。上述情况是在有状态协议机制下可能出现的情况。当然,有状态的协议也有很多好处,比如避免了向同一用户频繁发送相同资源的情况,节约了带宽。每一个协议都有其优点和缺点。HTTP 无状态的特性,使其协议更加的简单,也带来了一定的缺陷,就是服务器无法识别出来你是谁,无法识别你的身份,HTTP 在后来加入了 Cookie 机制,较好的解决了这一问题。
额外加一点,HTTP 中的 P 是 Protocol 的首字母,是协议的意思,所以说我们只能说 HTTP,而不能说「HTTP 协议」。HTTP 处于 ISO 制定的七层模型中的最顶层 —— 应用层,这个七层模型是用于计算机之间互联的一个标准体系,比较复杂,是属于计算机网络的相关知识,了解即可,同处于应用层的协议还包括 FTP,SMTP,还有 DNS 哦。
什么是 HTTPS
HTTPS 指的是超文本传输安全协议(Hypertext Transfer Protocol Secure)。HTTP 和 HTTPS 都是在七层模型中传输层之上的,在传输层会在通信双方建立起一个可靠的连接用于数据交换。简单的理解,HTTPS 就是将 HTTP 中的传输内容进行了加密,然后通过可靠的连接,传输到对方的机器上。