背景
環境: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