65

ユーザーから地理位置情報データを要求する Web サイトで次のエラーが発生します。

getCurrentPosition() と watchPosition() は、安全でないオリジンでは非推奨であり、サポートは将来削除される予定です。アプリケーションを HTTPS などの安全なオリジンに切り替えることを検討する必要があります。詳しくはgoo.gl/rStTGzをご覧ください。

つまり、基本的には単なる通知であり、Google リンクは非推奨であると言っているだけです。

Web サイトを SSL に移行する予定はありません。

4

11 に答える 11

47

アーキテクチャによっては、HTTPS への切り替えが困難または不可能になる可能性があるため、 Google Maps Geolocation APIを使用できる回避策を見つけました。使用制限がありますが、機能します。ブラウザ API キーが必要になるため、その使用をページのホスト名に制限することを忘れないでください。

メソッドが失敗した場合のフォールバック メソッドとして使用しgetCurrentPosition()ます。HTTPS に切り替えるまでは、これを機能させることができます。

JSFiddles は次のとおりです。

  • HTTP :getCurrentPosition()失敗し、API にフォールバックします
  • HTTPS :getCurrentPosition()成功します
于 2016-05-17T12:34:25.577 に答える
13

これにはhttps://ipinfo.io API を使用できます(これは私のサービスです)。1 日あたり 1,000 件までは無料です (SSL サポートの有無にかかわらず)。座標、名前などを提供します。次に例を示します。

curl ipinfo.io
{
  "ip": "172.56.39.47",
  "hostname": "No Hostname",
  "city": "Oakland",
  "region": "California",
  "country": "US",
  "loc": "37.7350,-122.2088",
  "org": "AS21928 T-Mobile USA, Inc.",
  "postal": "94621"
}

から取得したものと一致する API 応答で coords オブジェクトを構築する例を次に示しますgetCurrentPosition()

$.getJSON('https://ipinfo.io/geo', function(response) { 
    var loc = response.loc.split(',');
    var coords = {
        latitude: loc[0],
        longitude: loc[1]
    };
});

そして、これを のフォールバックとして使用する方法を示す詳細な例を次に示しますgetCurrentPosition()

function do_something(coords) {
    // Do something with the coords here
}

navigator.geolocation.getCurrentPosition(function(position) { 
    do_something(position.coords);
    },
    function(failure) {
        $.getJSON('https://ipinfo.io/geo', function(response) { 
        var loc = response.loc.split(',');
        var coords = {
            latitude: loc[0],
            longitude: loc[1]
        };
        do_something(coords);
        });  
    };
});

詳細については、 http://ipinfo.io/developers/replaceing-navigator-geolocation-getcurrentpositionを参照してください。

于 2016-09-23T17:33:00.837 に答える
7

--unsafely-treat-insecure-origin-as-secure="http://example.com" フラグ (「example.com」を実際にテストしたいオリジンに置き換えます) を使用して chrome を実行できます。そのオリジンは、このセッションで安全です。--user-data-dir=/test/only/profile/dir を含めて、フラグを機能させるための新しいテスト プロファイルを作成する必要があることに注意してください。

たとえば、Windows を使用している場合は、[スタート] をクリックして実行します。

chrome --unsafely-treat-insecure-origin-as-secure="http://localhost:8100"  --user-data-dir=C:\testprofile
于 2016-06-02T11:09:47.730 に答える
-3

SSL 証明書をインストールして、安全でないオリジンで動作しないようにするための時間を与えてgetCurrentPosition()くださいwatchPosition()。この機能を使用するには、アプリケーションを HTTPS などの安全なオリジンに切り替えることを検討する必要があります。

于 2016-09-08T03:23:58.780 に答える