##問題
スマホで、ローカル環境で自作している位置情報表示サイトにアクセスしても、位置情報を取得できない(geolocationが使えない)
##実現したいこと
ローカル環境で自作している位置情報サイトを、スマホでアクセスできるようにし、かつSSL通信にして、位置情報を取得したい。
##コード
ローカルでxamppを使ってます。
C:\xampp\htdocs\laravelapp\resources\views\alert_location.blade.php
javascript
1<script> 2 navigator.geolocation.getCurrentPosition(function(position){ 3 latitude = position.coords.latitude; 4 alert(latitude); 5 }); 6</script>
'localhost:8000/'(127.0.0.1)でアクセスすると、PCでは位置情報は取得でき、スマホでは接続できません。
このファイルに、スマートホンでアクセスするために、アドレスを以下に変更します。
command
1C:***>laravelapp> php artisan serve --host 19*.16.1*.1** 2Laravel development server started:<http://19*.16*.1*.1**:8000>
ブラウザで、19*.16*.1*.1**:8000/alert_location
にアクセスすると、サイトは表示されますが、位置情報は取得できません。スマホでも同様です。
geolocation.getCurrentPosition()は、SSL通信でないと使えないということなので、19*.16*.1*.1**:8000/alert_location
でのアクセスが、SLL通信になるようにすればいいのかな、と考えているのですが、良い方法が見当たりません。
##一応、試してみたこと
PCのブラウザで、'https://laravelapp'でアクセスできるようにしてみました。
リンク内容 https://www.keycoxs.com/entry/2018/03/29/161052
を参考にさせていただきました。ありがとうございます。
- C:\xampp\php\php.ini
extension = php opensell.dll //有効化
- C:\xampp\apache\conf\extra\httpd-ssl.conf
末尾に以下を追加
<VirtualHost *:443> ServerName laravelapp DocumentRoot "C:/xampp/htdocs/laravelapp/public" SSLEngine on SSLCertificateFile "conf/ssl.crt/laravelapp.crt" SSLCertificateKeyFile "conf/ssl.key/laravelapp.key" </VirtualHost>
- C:\Windows\System32\drivers\etc\hosts
以下を末尾に追加
`19*.16*.1*.1** laravelapp
- C\xampp\apache\conf\opnessl-san.cnf
[ SAN ] subjectAltName = @alt_names [ alt_names ] DNS.1 = laravelapp
以上を行い、証明書を発行しました。
##結果
PCからはhttps://laravelapp/alert_location
で目的とするサイトに接続し、位置情報を取得できましたが、スマホからアクセスすると、「IPアドレスが見つかりませんでした」とエラーになり、接続拒否されます。
どうやったら、ローカルで作成しているサイトに、スマホでアクセスして、位置情報を取得できるようになるのでしょうか?ご教授お願いします。