2016-06-15 11 views
9

ユーザーの現在地に基づいて郵便番号の自動検出に問題が発生しました。 http://www.mapdevelopers.com/what-is-my-zip-code.php does'nt作品としてだけでなく どこに動作しますhttps://www.whatismyzip.com/:それは私たちがhttpsにサイトを設定する必要がありましたし、それはOKHTTPサイトでChromeの場所が検出されない - 問題

例を働く他のブラウザ(エッジ、IE、Firefoxの) にうまくいきました。

<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?key=AIzaSyAdGQKI4sEj5TZAjNCds422V_ZHevD45Fo"></script> 
<%-- <script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?sensor=false&libraries=places"></script>--%> 

<%--  <script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?libraries=places"></script> 
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>--%> 
    <script type="text/javascript"> 


     function ShowMessages() { 

      debugger; 
      if (navigator.geolocation) { 
       navigator.geolocation.getCurrentPosition(success); 
      } else { 
       alert("Geo Location is not supported on your current browser!"); 
      } 
      function success(position) { 
       debugger; 
       var lat = position.coords.latitude; 
       var lng = position.coords.longitude; 
       var latlng = new google.maps.LatLng(lat, lng); 
       var geocoder = geocoder = new google.maps.Geocoder(); 
       geocoder.geocode({ 'latLng': latlng }, function (results, status) { 
        if (status == google.maps.GeocoderStatus.OK) { 
         if (results[1]) { 

          var searchAddressComponents = results[0].address_components, 
          searchPostalCode = ""; 
          $.each(searchAddressComponents, function() { 
           if (this.types[0] == "postal_code") { 
            searchPostalCode = this.short_name; 
           } 
          }); 

          document.getElementById('hidden1').value = searchPostalCode 
          __doPostBack('', ''); 


         } 
        } 
       }); 
      } 

     } 

何か助け/回避策があります。

編集:Google API以外にも、他の選択肢はありますか?

+0

[GetCurrentPositionはデプロイ後に動作しません](http://stackoverflow.com/questions/37192827/getcurrentposition-doesnt-work-once-deployed) – geocodezip

+0

@geocodezip:私は上記の参考文献では、httpで動作させる方法の提案は大歓迎です。 – SSJGSS

+0

これはhttp://を介してChromeで動作しなくなります(古いバージョンを使用しない限り特に役に立ちません) – geocodezip

答えて

4

Transfer Encryptionせずにサイトへの位置情報を送信しませんChrome 50で導入された新しいセキュリティルール。

Hereは、マッピングAPIの問題に適しています。

以前のバージョンのChrome(50)に戻すことも解決策ですが、Web開発ではこれを実行することは非常に困難です。

は、しかし、実際にはまだそれら(Which gives me a short term peace of mind)サポートし、現在唯一クロームMapping APIや他のブラウザで、このような問題を持っている、ということです。

しかし、遅かれ早かれ、これは他のブラウザでも実践されている可能性があります。これは私のように既存のユーザーにとって大きな問題となる可能性があります。それは長期的なプロセス(私の場合)であるため、httpを使用するのではなく、httpsサイトへの開発と移行を開始することをお勧めします。pros and consが処理されています。

12

あなたは以下のとおり非セキュア接続でHTML5ジオロケーションAPIを使用することはできません:ページからHTML5ジオロケーションAPIを使用して ユーザの位置を取得する

クローム50以降では、クロムはもはやサポートは を配信しました非セキュアな接続によって。つまり、 ジオロケーションAPI呼び出しを行っているページは、 HTTPSなどのセキュリティ保護されたコンテキストから配信する必要があります。

しかし、長期的に推奨されていないものの、Google Maps Geolocation APIまたはGeoIP、そしておそらく他の人を使用することが可能です。下記を参照してください:

は、Googleマップ ジオロケーションAPI、のGeoIPのように、この変更によって影響されないユーザーの 場所を得ることが可能な代替選択肢の数があります

(例として、ベースの他の地理があります ソリューション)、およびユーザーが入力した郵便番号が含まれます。ただし、 は、ジオロケーション への継続的なアクセスを保証する最適なパスがHTTPSに移行することを強くお勧めします。

出典:Geolocation API removed from unsecured origins in Chrome 50

+0

これを有効にするためのコードスニペットはありますか? – SSJGSS

+0

コードスニペットはありません。ジオロケーションAPIを使用してスクリプトをHTTPS環境にホストし、そのHTTPページのデータをそこから取得する必要があります。それ以外の場合は、サードパーティAPIにクエリを発行してユーザーの場所を取得し、ページ上で再利用することができます。 – MacK

+0

@MacK SSL環境でスクリプトをホストしたり、結果をHTTPページで取得することはできません。それを試して動作しません。 SSLもページに存在する必要があります。 –

5

安全でない起源の強力な機能を卑下

クロームセキュリティはもともと様々なブラウザの開発メーリングリストにこれを送りました。 blink-devに関するメールの元の意図を参照してください。これは強力な新機能のための安全な起源を好む元のアイデアに基づいています。

提案

我々はすでに(新しい、時に存在していない)の要件を満たしていない出荷しているhttps://w3c.github.io/webappsec-secure-contexts/to機能で概念の適用を開始します。特に、完全な祖先チェーンも安全である「安全な起点」(例えば、HTTPS)でのみ、強力な機能にアクセスできるようにする必要があります。彼らは、これらの既存の機能のための安全な起源要求することによって開始するように設定されている

:徐々にmarking HTTP as non-secureと同様に

Geolocation — requires secure origins as of M50 Device motion/orientation EME getUserMedia AppCache

を、我々は、使用のしきい値に基づいて、徐々に確保のみのために、これらの機能を移行することを期待し、最低使用量から始めてより高い方へ移動します。また、非セキュアな起点のために機能が非難されることを徐々にUXに示すことを期待しています。

これらの機能のそれぞれに対する非推奨戦略は決定されておらず、機能ごとに非常に異なる場合があります。我々は現在、どのような閾値になるのか、どのような種類の起源にその機能がどれくらい使われているのかを知りません。私たちはデータを収集する過程にあり、私たちがデータを持っているときに報告します。この時点では、最終的な非推奨以外の堅実な計画はありません。私たちは、この廃止に近づく最善の方法についての一般的な議論を刺激することを意図しています。

テスト推奨されない強力な機能

機能を使用すると、有効な証明書を持っていないサーバー上の機能をテストしておく必要がある開発者であれば、次の2つのオプションがあり、廃止されました後:

localhostはHTTP経由で安全な送信元として扱われるため、ローカルホストからサーバーを実行できる場合は、そのサーバーでその機能をテストできるはずです。 --unsafely-treat-insecure-origin-as-secure="http://example.com"フラグを使用してchromeを実行できます(実際にテストしたい起点で "example.com"を置き換えます)。この原点はこのセッションで安全であるとみなされます。フラグが機能するように新しいテストプロファイルを作成するには、--user-data-dir=/test/only/profile/dirも含める必要があります。

+1

素敵な説明!だから我々はあまりにも非難される他の新機能を見なければならない!! – SSJGSS

+1

はい、すぐにhttpsにアップグレードしてください。 –

+0

MacOSのChrome 56では動作しません。 – kaiser

3

これは議論の場ではないことは分かっていますが、この回答はおそらくアプリケーションでジオロケーションを実装しているプログラマーの大部分を占めていると思われます。

他の回答 "Geolocation API removed from unsecured origins in Chrome 50"に記載されています。
これはGoogleの奇妙な動きです。
彼らは、変更がユーザーのプライバシーに起因すると主張します。

これは、ユーザーのプライバシーを著しく損なうものです。

Googleはユーザーのプライバシーを気にしています(笑)。
私は、HTML5ジオロケーションAPIを使用して、公開用に多数のアプリケーション(CMSプラグイン、スタンドアロンアプリケーションテンプレート)を開発しました。
SSL証明書を取得するのに1000人のユーザーになるとは本当に言えません。

私の見解から、Googleは独立した開発者や「スーパーユーザー」のほとんどがインターネットをより高価で使いづらいものにしようとしています。

選択肢がある:GoogleのジオロケーションAPIを使用して

  • (限られたリクエスト、より多くのために支払う)

  • は有料サービスを取得します。

SSL証明書を入手してインストールし、私は、同じサーバー上のHTTPSの場所から、パブリックアクセスのCDN(githubの)からジオロケーションスクリプトをロードしようとしましたが、同じエラーが現れました。
Chromeには、ウェブサイトにもSSLがインストールされている必要があります。

+1

私はそれをもう一度。 Googleによる奇妙な動き。 – SSJGSS

関連する問題