「現在位置から検索」が反応しない件について


少し前に見た、とあるサイトで、現在位置から検索ができなくて、おいおいって思ってたわけだけど、せっかくだから調べてみた記事。
ポケモンばかり書いてないでWeb系も書いてかんといかんね。

症状について

現在位置を探すを押しても何も反応しない。もしくはエラー表示になってしまう。
(最初は、自分の使っている端末の影響かなと思ったけど、そうでもないような感じだった)
クリック(タッチ)自体は反応しているような感じがあった。
consoleを見てみると、
「getCurrentPosition() and watchPosition() are deprecated on insecure origins. To use this feature, you should consider switching your application to a secure origin, such as HTTPS. See https://goo.gl/rStTGz for more details.」
と言う文字が表示されている。

原因について

原因はブラウザの仕様変更。
https://sites.google.com/a/chromium.org/dev/Home/chromium-security/deprecating-powerful-features-on-insecure-origins※英語のクロム公式サイト
要するに、httpでgelocation使うのはダメやで。httpsにしてねって書いてある。
gelocationをはじめとした、ローカルに強く影響を受ける強力な機能を使用する場合はSSLにしてセキュリティを強化してくださいってこと。

解決策について

まず、あらかじめ書いておくと、現在の仕様のまま、httpsにせずに正常に動かすのは不可能。
もしそれが仮にできたとしても、それはハッキングに近いことであり、最悪検索から消えてしまう恐れすらあるのでやめよう。
解決の方向性は2つ。

①httpsにする

今の機能をそのまま使うならこれしかない。ブラウザ様の指示通り、おとなしくhttpsにしましょう。
.htaccessで

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]

みたいの設置してリダイレクトさせよう。ただし、普通に設置するだけだとエラーが起きる場合がある。
その場合はこちらのサイトを参考にしてみてくーださい。
https://jp.globalsign.com/blog/2016/browser_update_ssl_error.html

②現在位置から検索の項目を消す

①が無理ならこれしかない。いや本当に。もう現在位置から探すをやめよう。

では

コメントを残す

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。名前及びコメントは必須項目、メールアドレス及びサイトURLは任意です。