背景
环境:Win10 IIS
在ArcGIS API for JavaScript移动端开发,需要定位的时候,出现一个问题“GeolocationPositionErrorcode: 2 message: "Network location provider at 'https://www.googleapis.com/' : No response received."”。
这是电脑端chrome中测试的提示,在火狐是好的,火狐会提示:
点击允许获取位置,程序就能正常运行,IE、Edge也可以。但是chrome根本不提示这个。 在手机端测试几款常用的浏览器,包括安卓和IOS,也都不行。
问题原因
对计算机的知识有些欠缺,所以直接搜索问题出在哪里,然后就在谷歌开发的网站找到答案:
意思很明显,就是要把HTTP迁移到HTTPS。
另外在火狐官网也看到Geolocation API的相关描述,里面有个可以测试的地方:
①这是Chrome里的测试
②这是Firefox里的测试结果:
另外,Edge也是可以的,IE没反应。
问题解决
①大部分资料是建议到用Let's Encrypt、阿里云、腾讯云等部署免费 HTTPS。我是想用Let's Encrypt的,但是去github上下载软件包时,一直下载失败,就放弃了。并且最新版本列出来很多,也不知道下载哪个。
② 我是在ArcGIS官网的一篇文章(在 Web 服务器上启用 HTTPS)解决的这个问题。
经过测试,PC端Chrome出现别的错误,可能需要用Let's Encrypt那些部署HTTPS。但是我用第二种方法,手机端的各个浏览器都可以获取位置了。以下为safari:
可能遇到的问题:
①为什么我的iis7.0的功能视图中没有"服务器证书":在服务器站点名称下的功能视图里有服务器证书,在网站名称下的功能视图里没有。服务器站点名称是在iis里应用程序池和网站的父级。
参考网站
IIS 使用 Let’s Encrypt 证书部署 HTTPS 站点
windows server使用 LetsEncrypt-Win-Simple来安装和使用用Let's Encrypt免费SSL证书
从 HTTP 到 HTTPS - IIS 部署免费 HTTPS