Google Maps JavaScript API RefererNotAllowedMapError


122

Müşterilerimizden biri için bir coğrafi yerleşim uygulaması geliştirmeye çalışıyoruz ve ilk önce kendi etki alanında test etmek istiyoruz.

Google Maps JavaScript API için imzaladık ve geçerli bir tarayıcı anahtarımız var ve www.grupocamaleon.com etki alanımız bu anahtarı kullanma yetkisine sahip.

Ancak en kolay örneği bile hatasız çalıştırmayı başaramayız.

Alanımızda ve anahtarımızla aşağıdaki demomuz var:

(1) http://www.grupocamaleon.com/boceto/aerial-simple.html

Ancak işe yaramıyor ve Firebug konsolu diyor ki:

"Google Maps API hatası: Google Maps API hatası: RefererNotAllowedMapError (RefererNotAllowedMapError'daki Google dokümanlarına bağlantı) Yetkilendirilecek site URL'niz: (1)"

Kimlik bilgileri sayfamda kabul edilecek yönlendiren ekleme imkanı yok, bu nedenle yönlendiren eklemeyi içeren çözümler şu anda mümkün değil.

Kimlik bilgilerim Sayfam:

görüntü açıklamasını buraya girin

Neden bu hatayı alıyoruz? Nasıl düzeltebiliriz?


Google maps API yönlendiricisinin olası kopyasına izin verilmez . Kodunuz benim için çalışıyor (anahtarımla), bu nedenle anahtarınızda, izin verilen yönlendirmelerde veya onunla kullanmak için etkinleştirilen hizmetlerde bir sorun var.
geocodezip

Ancak buradaki cevabımda görebileceğiniz gibi, kimlik bilgileri sayfamda böyle bir olasılık yok. Herhangi bir ipucu?
Grupo Camaleón Creativos

Ben bir acemiyim ve bu siteyi doğru bir şekilde nasıl kullanacağımı henüz bilmiyorum. Rahatsızlık için özür dileriz. Kimlik bilgileri sayfama bilgi ekleyerek sorumu düzenledim. Alıntı yapılan bazı çözümler, şu anda yapamadığım yönlendirmeleri eklemeyi içeriyor.
Grupo Camaleón Creativos

Anahtarın yönlendirenlerini değiştiremiyorsanız, anahtarı kaldırın veya kontrol ettiğiniz bir anahtarla değiştirin. Bir anahtar gerekli değildir, ancak dahil etmenin faydaları vardır.
geocodezip

1
APP veya API kısıtlaması olmayan yeni anahtar oluşturdum, 10 dakika boyunca expiredKey yazıp çalışmaya başladım. Sonra sadece Yerler API eklemeyi denedim, ancak web'den çağrılıyor ve şöyle diyor: Google Maps JavaScript API error: RefererNotAllowedMapErrorbekledikten sonra bile. Sonra denedim Maps JavaScript APIve dedi ki RefererNotAllowedMapError, sayfayı yenilemeyi denedim ve sonunda 2 dakika 40 saniye sonra çalışmaya başladı. Öyleyse cehenneme dikkat et. Ama hiçbir şey OLMADAN benim işime ÇALIŞIYOR ve Maps JavaScript APIsadece öyle . Sadece çok beklemelisin.
psycho brm

Yanıtlar:


168

Bunun zaten birkaç cevabı olan eski bir soru olduğunu biliyorum, ancak aynı sorunu yaşadım ve benim için sorun, console.developers.google.com adresinde verilen örneği takip edip etki alanlarımı formatta girmemdi *.domain.tld/*. Bu hiç işe yaramadı ve ben gibi bu varyasyonlar her türlü ekleme çalıştı domain.tld, domain.tld/*, *.domain.tldvb

Bunu benim için çözen, asıl protokolü de eklemekti ; http://domain.tld/*sitemde çalışması için ihtiyacım olan tek şey. https://domain.tld/*HTTPS'ye geçersem eklemem gerekecek sanırım .

Güncelleme: Google nihayet yer tutucuyu httpşimdi içerecek şekilde güncelledi :

Google Maps API yönlendiren giriş alanı


1
Onaylıyorum: API'yi kullanmama izin veren tek kombinasyonhttp://www.---.com/*
Marco Panichi

6
Bu cevap, kodumu çalıştıran tek cevaptır. Google'ın sağladığı örneğin işe yaramadığını doğrulayabilirim.
Jargs

1
Bize yanlış bilgi verdiğiniz için teşekkür ederiz @ Google. http://----.com/* doğru biçimdir.
Michael Yaeger

2
Birden fazla alt alan adınız varsa, http: //*.example.com ve https: //*.example.com'u tüm temelleri kapsayacak şekilde yapabilirsiniz
tim.baker

1
Belki Google bu özelliği güncelledi - benim için protokol olmadan çalışıyor. Ben example.com/*ayarları alanına ve çalışırhttps://example.com/map
Andy

21

Hadi Google, API Kimlik Bilgileri sayfasının izin verdiğinden daha akıllısınız. (Biliyorum çünkü orada çalışan iki oğlum var.)

"Yönlendirenler" listesi, tahmin ettiğinden çok daha zor. (Elbette daha bağışlayıcı olmalı .) İşte keşfetmem saatler süren bazı kurallar :

Muhtemelen başka kurallar da vardır, ancak bu sıkıcı bir tahmin oyunudur.


1
Düzenlemeden önceki cevap hakkında, benim de sabrım tükeniyor. Joker karakterlerin (*) yalnızca bir adresin sonunda ( http://my.site.com/*) veya bir alt etki alanında ( http://*.site.com) çalıştığı görülüyor . TÜM diğer durumlarda işe yaramıyor
Cristian Traìna

1
Yalnızca Yerler API'sine izin vermek için yanlış bir kısıtlama koymuştum (yönlendiren kısıtlamalarının hemen yanındaki sekme). Bu, aynı RefererNotAllowedMapError hatasıyla sonuçlanır.
Matt Greer

Www ekleniyor. benim için alan adıma sabitledi. Etki alanının sonuna bir joker karakter (*) eklemenin (https://www.my-site.com/*)sorunu da düzelttiğinden emin değilim .
Mugé

ionic mobil uygulamamın alanı ionic: // app # / tabs şeklinde. Kısıtlamalara nasıl dahil ederim? Birçok kombinasyon denedim ama boşuna. Ör: ionic: // app # / tabs, httpionic: // app # / tabs, httpsionic: // app # / tabs, ionic: // *, ionic: // app # / *, httpionic: // *, ......
AUK4SO

@ AUK4SO - pound işaretinin ( #) URL'lerde özel bir anlamı vardır. Bakın <a name=...>. Yoksa demek istedin iconic://1234/foo?
Rick James

18

Belgelere göre, 'RefererNotAllowedMapError',

Google Haritalar JavaScript API'sini yükleyen mevcut URL, izin verilen yönlendirenler listesine eklenmedi. Lütfen Google Developers Console'daki API anahtarınızın yönlendirme ayarlarını kontrol edin.

Google Maps Embed API'yi kendi kişisel / iş kullanımım için kurdum ve şu ana kadar herhangi bir HTTP yönlendireni belirtmedim. Hata kaydetmiyorum. Ayarlarınız, Google’ı ziyaret ettiğiniz URL’nin kayıtlı veya izinli olmadığını düşündürüyor olmalıdır.

görüntü açıklamasını buraya girin


15

Sadece değiştirirseniz, ayarların geçerlilik kazanmasının 5 dakika kadar sürebileceğini hatırlatın.


15

Birçok yönlendirme varyasyonunu denedim ve Google'ın form alanına doldurduğu örneğin kusurlu olduğunu fark edene kadar 5 dakika bekledim. Gösterirler:

*.example.com/*

Ancak bu, yalnızca alan adınız varsa subdomain.veya www.önünüzdeyse işe yarar . Aşağıdakiler benim için hemen işe yaradı (önde gelen dönemi Google örneğinden çıkararak):

*example.com/*

9
Kötü fikir - birisi hackexample.com
api'nizi

3
@HyderA - Daha olası bir olasılık, birisinin fazladan harita yüklemesi almak için bir sürü ücretsiz google hesabı kaydettirmesidir.
ow3n

@HyderA hala anahtara ihtiyaçları olacak, bu yüzden büyük bir şans değil. Ama haklısın, yine de potansiyel bir risk.
Eoin

ionic mobil uygulamamın alanı ionic: // app # / tabs şeklinde. Kısıtlamalara nasıl dahil ederim? Birçok kombinasyon denedim ama boşuna. Ör: ionic: // app # / tabs, httpionic: // app # / tabs, httpsionic: // app # / tabs, ionic: // *, ionic: // app # / *, httpionic: // *, ......
AUK4SO

10

Göre google docs çünkü bu oldu url, bunu hangi Google Maps API kullanıyorsanız not registerediçindelist of allowed referrers

DÜZENLE :

Gönderen Google Dokümanlar

Belirli bir alan adının tüm alt alanları da yetkilidir.

Eğer http://example.com kabul edilir ise http://www.example.com da yetkilidir. Tersi doğru değildir: http://www.example.com yetkilendirilirse, http://example.com mutlaka yetkilendirilmez

Yani, lütfen http://testdomain.cometki alanını yapılandırın , ardından http://www.testdomain.comçalışmaya başlayacaksınız.


Benim durumumda, etki alanı için yanlış yapılandırılmış DNS idi. Örneğin: www.testdomain.com iyi çalıştı testdomain.com çalışmadı ve bir hataya neden oldu
Tahir Khalid

1
Bunun mantığı tersine dönmüş gibi görünüyor? Bir şey kaçırmadığım sürece.
twobob

10

Doğru APIS'in etkin olup olmadığını da kontrol edin.

Yukarıdakilerin hepsini, yıldız işaretlerini, etki alanı tld'lerini, eğik çizgileri, ters eğik çizgileri ve her şeyi denedim, hatta sonunda son umut olarak yalnızca bir url girerek.

Bunların hepsi işe yaramadı ve sonunda Google'ın artık hangi API'leri kullanmak istediğinizi belirtmenizi gerektirdiğini fark ettim (ekran görüntüsüne bakın)

görüntü açıklamasını buraya girin

İhtiyacım olanları etkinleştirmedim (benim için Maps JavaScript API idi)

Etkinleştirdikten sonra, hepsi şu şekilde çalıştı:

http://www.example.com/ *

Umarım bu birine yardımcı olur! :)



8

Senin bile HTTP Referreresyeterince geçerli olduğunu buldum , yanlış API Restrictionssebepler Google Maps JavaScript API error: RefererNotAllowedMapError.

Örneğin:

  • Anahtar için Javascript API kullanıyorsunuz.
  • ekle http://localhost/*içinApplication Restrictions / HTTP Referrences
  • Maps Embed APIBunun yerine seçinMaps Javascript API
  • Bu neden olur RefererNotAllowedMapError

Evet, benim dava nlardakin- içinde konuydu
Andriy F.

Peki ya güvenlik? Localhost'a izin verirsem, anahtarımı localhost'ta herkes kullanabilir mi?
Kaushal

5

Birkaç yıl boyunca birçok sözde çözüm var ve bazıları artık çalışmıyor ve bazıları hiç çalışmıyor, bu nedenle Temmuz 2018 sonu itibarıyla güncel çalışmam.

Kurmak:

Google Maps JavaScript API, ...

  • API'yi çağıran birden çok alan: example.comveexample.net
  • keyfi alt alanlar: user22656.example.comvb.
  • hem güvenli hem de standart HTTP protokolleri: http://www.example.com/vehttps://example.net/
  • belirsiz yol yapısı (yani çok sayıda farklı URL yolu)

Çözüm:

  • Aslında yertutucuya kalıbı kullanarak: <https (or) http>://*.example.com/*.
  • Protokolü atlamamak, ancak etki alanı başına iki giriş eklemek (protokol başına bir tane).
  • Alt etki alanları için ek bir giriş ( *.ana bilgisayar adının başında yer alır).
  • RefererNotAllowedMapErrorHatanın hala uygun konfigürasyon kullanılarak (ve bolca beklemiş) göründüğünü hissettim . Kimlik bilgisi anahtarını sildim, isteği tekrarladım (şimdi alıyorum InvalidKeyMapError), yeni kimlik bilgileri oluşturdum (tam olarak aynı kurulumu kullanarak) ve o zamandan beri işe yaradı.
  • Yalnızca protokol ve etki alanı eklemek, alt etki alanlarını içermiyor gibi görünüyordu.
  • Etki alanlarından biri için çalışma yapılandırması şuna benzer:

Google API yapılandırmasından ekran görüntüsü

(Metin olarak :)

Accept requests from these HTTP referrers (web sites)
    https://*.example.com/*
    https://example.com/*
    http://*.example.com/*
    http://example.com/*

Benim durumumda, bu çözüm yardımcı oldu, ancak yanlış API'de API Kısıtlaması vardı. Bazı nedenlerden dolayı aynı hata mesajı döndürüldü. API Kısıtlamasının "Yerler API" yerine "Haritalar Javascript API" olarak değiştirilmesi sorunu çözdü.
LMG

4

görüntü açıklamasını buraya girin

Bu HTTP yönlendiricilerinden (web siteleri) gelen istekleri kabul edin

Localhost dizin yolunu yazın


3
Google'ın metnine göre, isteğe bağlı bir özellik olması gerekiyor ve boşsa çalışmalı
ejectamenta

@ayanchakraborty - 10 farklı localhost / index.html (ve çeşitli yollar) kombinasyonunun yanı sıra çeşitli dosya kombinasyonlarını denedim: ///android_assets/www/index.html - ama hiçbir şey çalışmıyor. Konsoldaki RefererNotAllowedMapError şunu gösteriyor: Yetkilendirilecek site URL'niz: __file_url __ // android_asset / www / index.html # / tab / map //// `- ancak bu ve varyasyonlar da çalışmıyor.
rolinger

4

Aynı hatayı yaşadım:

görüntü açıklamasını buraya girin

Bu bağlantı, API anahtarı kısıtlamalarının nasıl ayarlanacağından bahsediyor: https://cloud.google.com/docs/authentication/api-keys#adding_http_restrictions

Benim durumumda sorun, bu kısıtlamayı kullanıyor olmamdı:

HTTP yönlendirenler (web siteleri) Bu HTTP yönlendiricilerinden (web siteleri) gelen istekleri kabul edin (İsteğe bağlı) Joker karakterler için * 'leri kullanın. Bunu boş bırakırsanız, herhangi bir yönlendirenden gelen talepler kabul edilecektir. Bu anahtarı üretimde kullanmadan önce yönlendiren eklediğinizden emin olun. https://*.example.net/*

Bu, https://www.example.net veya https://m.example.net veya https://www.example.net/San-salvador/ gibi URL'lerin çalışacağı anlamına gelir . Ancak, https://example.net veya https://example.net veya https://example.net/San-salvador/ gibi URL'ler çalışmaz. Sadece ikinci bir yönlendiren eklemem gerekiyordu:

https://example.net/*

Bu benim için sorunu çözdü.


4

2 web sitesi etki alanı ekliyorum, alt etki alanında "*" olarak ayarlanmış çalışmıyor, ancak aynı Google Harita API anahtarını kullanan web sitelerim için belirli alt etki alanı "WWW" ve alt etki alanı olmayanlar çalıştırıldı.

alt etki alanında "*" kullanmayın

Umarım yardımcı olur.


3

API kimlik bilgileri sayfanızın bir ekran görüntüsünü gösterirsiniz, ancak "Tarayıcı anahtarı 1" i tıklamanız ve oradan yönlendiren eklemek için gitmeniz gerekir.


3

Daha derin iç içe geçmiş sayfalar için

Örneğin bir klasörde veya iç içe geçmiş sayfalar gibi bir projeniz varsa

http://yourdomain.com/your-folder/your-page bunu girebilirsin

http://yourdomain.com/*/*

Önemli kısım, /*/*/*ne kadar ileri gitmeniz gerektiğine bağlı

Görünüşe göre daha derin yollara *girmeyecek /ya da uymayacak ..

Bu, bundan daha derin yuvalama yapmadığınız sürece tam etki alanı erişiminizi sağlayacaktır ..


3

RefererNotAllowedMapErrorProjeye bağlı bir faturalandırma hesabının olmamasından kaynaklanabileceğini öğrenene kadar bu düzeltmelerin hiçbiri benim için işe yaramadı . Bu nedenle, ücretsiz denemenizi veya her neyse etkinleştirdiğinizden emin olun.


3
  1. Faturalandırmanızın etkinleştirildiğini

  2. Web sitenizin Google Konsoluna eklendiğini

  3. Web sitenizin uygulamanızdaki yönlendirenlere eklendiğini.

  4. (hem www hem de www için joker karakter yapın)

http://www.example.com/ * ve http://example.com/ *

  1. Javascript Haritalarının etkinleştirildiğini ve doğru kimlik bilgilerini kullandığınızı

  2. Yukarıdaki Google Konsolunuzu etkinleştirmek için web sitesinin DNS'nize eklendiğini.

  3. Çalıştıktan sonra gülümse!


İzin verilen yönlendirenler listeniz Google Cloud Platform web konsolunda (console.cloud.google.com)APIs & Services > Credentials > (your key) > Application restrictions > HTTP Referrers
Master of Ducks

3

Bu, korkunç bir uygulamaya sahip başka bir sh1tty Google ürünü.

Bununla bulduğum sorun şu ki, bir API anahtarını IP adresine göre kısıtlarsanız, işe yaramayacak ... AMA bu noktayı netleştirmek için Google'dan uzak olsun ... Bulduğum sorun giderme ve araştırmaya kadar değildi:

IP adresi kısıtlamasına sahip API anahtarları, yalnızca sunucu tarafından kullanılması amaçlanan web hizmetlerinde (Geocoding API ve diğer Web Hizmeti API'leri gibi) kullanılabilir. Bu web hizmetlerinin çoğu, Maps JavaScript API içinde eşdeğer hizmetlere sahiptir (örneğin, Geocoding Service'e bakın). Maps JavaScript API istemci tarafı hizmetlerini kullanmak için, HTTP yönlendirenler kısıtlamasıyla güvence altına alınabilen ayrı bir API anahtarı oluşturmanız gerekir (bkz. Bir API anahtarını kısıtlama).

https://developers.google.com/maps/documentation/javascript/error-messages

FFS Google ... Kurulumda açıklığa kavuşturulması iyi olacak oldukça önemli bilgiler ...



2

Sonunda Google'dan şu ipucunu kullanarak çalıştım: ( https://support.google.com/webmasters/answer/35179 )

İşte alan adı ve site tanımlarımız. Bu tanımlar, Search Console doğrulamasına özeldir:

http://example.com/ - A site (because it includes the http:// prefix)
example.com/ - A domain (because it doesn't include a protocol prefix)
puppies.example.com/ - A subdomain of example.com
http://example.com/petstore/ - A subdirectory of http://example.com site

2

Ben de bunun işe yaramasını sağlamak için uğraştım, ama işte bazı ipuçları:

  • Yönlendiren olarak belirlenen URL'ler dahil http, örneğinhttp://example.com/*
  • Google Haritalar JavaScript API etkinleştirildi
  • Bu hesapta faturalandırma ayarlandı

Yukarıdakilerin tümü çözüldüğünde, haritalar beklendiği gibi görüntülendi.


1

Yerler API'sini (Otomatik Tamamlama) kullanmaya çalışıyordum ve ayrıca Yerler API'sinin çalışabilmesi için Google Cloud Console içinden Maps Javascript API'yi etkinleştirmem gerekiyordu.


0

Döşemenizi yerinde kontrol edin. Google Haritalar JavaScript API'sini yüklemek için bunun gibi bir komut dosyası etiketi kullanın

<script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&callback=initMap"
async defer></script>

Bu bildirimi Wordpress sitemde function.php dosyasında kullanıyorum

wp_enqueue_script("google-maps-v3", "//maps.google.com/maps/api/js?key=YOUR_API_KEY", false, array(), false, true);

Bu formatta API anahtarını ayarladım ve iyi çalışıyor

http://my-domain-name(without www).com/*

bu beyan çalışmıyor

*.my-domain-name.com/*

0

Kısıtlamaları kaldırmak (Yok'a) benim için çalıştı.


6
Kısıtlamaların kaldırılması kötü bir uygulama olarak kabul edilir ve API'nizi savunmasız hale getirir.
mtness

2
@mtness evet tabii ki ama poster zaten denedi ve başarılı olamadı. Maalesef Google'ın belgeleri artık yardımcı olmuyor. Burada yeni ipuçları getiriyorlar Her cevap, o ... neredeyse bir tahmin oyunu gibi
James Wong - Eski Monica



0

Bu benim için çalıştı. API anahtar ayarları altında 2 ana kısıtlama kategorisi vardır:

  • Application restrictions
  • API restrictions

Uygulama kısıtlamaları:

Yönlendiren bölümünün en altına web sitenizin url'sini ekleyin " http://www.grupocamaleon.com/boceto/aerial-simple.html ". Bölümün sağ tarafında çeşitli gereksinimleri temel alan örnek kurallar vardır.

Uygulama kısıtlamaları

API kısıtlamaları:

Benzersiz anahtarımız yalnızca Google haritalar API'sini çağırmak için kullanılacağından (muhtemelen) ve aşağıdaki ekte görebileceğiniz gibi kaydedeceğinden, API kısıtlamaları altında açılır listeden 'Maps Javascript API'yi açıkça seçmeniz gerekir. Umarım bu senin için çalışır ..... benim için çalıştı

görüntü açıklamasını buraya girin

Komut Dosyanızı kontrol edin:

Ayrıca sorun, komut dosyası etiketi içindeki yanlış anahtar beslemesi nedeniyle ortaya çıkabilir. Şöyle bir şey olmalı:

  <script async defer src="https://maps.googleapis.com/maps/api/jskey=YOUR_API_KEY&callback=initMap"
  type="text/javascript"></script>
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.