Google Maps JavaScript-API RefererNotAllowedMapError

122

Wir versuchen, eine Geoplacement-App für einen unserer Kunden zu entwickeln, und wir möchten sie zunächst in unserer eigenen Domain testen.

Wir haben für die Google Maps JavaScript-API unterschrieben und verfügen über einen gültigen Browserschlüssel. Unsere Domain www.grupocamaleon.com wurde zur Verwendung dieses Schlüssels autorisiert.

Aber wir können nicht einmal das einfachste Beispiel machen, um es ohne Fehler auszuführen.

Wir haben in unserer Domäne und mit unserem Schlüssel die folgende Demo:

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

Aber es funktioniert nicht und die Firebug-Konsole sagt:

"Google Maps API-Fehler: Google Maps API-Fehler: RefererNotAllowedMapError (Link zur Google-Dokumentation zu RefererNotAllowedMapError) Die zu autorisierende Website-URL: (1)"

Auf meiner Anmeldeinformationsseite fehlt die Möglichkeit, zu akzeptierende Verweise hinzuzufügen. Daher sind derzeit keine Lösungen zum Hinzufügen von Verweisen möglich.

Meine Anmeldeinformationsseite:

Geben Sie hier die Bildbeschreibung ein

Warum bekommen wir diesen Fehler? Wie können wir das beheben?

Grupo Camaleón Creativos
quelle
Mögliches Duplikat des Google Maps API-Referrers nicht zulässig . Ihr Code funktioniert für mich (mit meinem Schlüssel), daher stimmt etwas mit Ihrem Schlüssel, den zulässigen Verweisen oder den Diensten, die für die Verwendung mit diesem Schlüssel aktiviert sind, nicht.
Geocodezip
Aber ich habe keine solche Möglichkeit auf meiner Anmeldeinformationsseite, wie Sie in meiner Antwort hier sehen können. Irgendein Hinweis?
Grupo Camaleón Creativos
Nun, ich bin ein Neuling und weiß noch nicht, wie ich diese Seite richtig nutzen soll. Entschuldigung für die Unannehmlichkeiten. Ich habe meine Frage bearbeitet und Informationen auf meiner Anmeldeinformationsseite hinzugefügt. Einige der genannten Lösungen beinhalten das Hinzufügen von Überweisern, was ich im Moment nicht tun kann.
Grupo Camaleón Creativos
Wenn Sie die Verweise für den Schlüssel nicht ändern können, entfernen Sie ihn oder ersetzen Sie ihn durch einen von Ihnen kontrollierten. Ein Schlüssel ist nicht erforderlich, aber die Aufnahme eines Schlüssels bietet Vorteile.
Geocodezip
1
Ich habe einen neuen Schlüssel ohne APP- oder API-Einschränkungen erstellt. Dort stand 10 Minuten lang expiredKey und begann dann zu arbeiten. Als nächstes habe ich versucht, nur die Places-API hinzuzufügen, aber sie wird aus dem Web aufgerufen und sagt: Google Maps JavaScript API error: RefererNotAllowedMapErrorAuch nach dem Warten. Dann versuchte ich es Maps JavaScript APIund es sagte immer wieder RefererNotAllowedMapError, versuchte die Seite zu aktualisieren und es begann schließlich nach 2 Minuten und 40 Sekunden zu funktionieren. Also pass auf. Aber OHNE irgendetwas funktioniert für mich und Maps JavaScript APInur so. Sie müssen nur viel warten.
Psycho Brm

Antworten:

167

Ich weiß, dass dies eine alte Frage ist, die bereits mehrere Antworten hat, aber ich hatte das gleiche Problem. Für mich bestand das Problem darin, dass ich dem Beispiel auf console.developers.google.com gefolgt bin und meine Domains im Format eingegeben habe *.domain.tld/*. Das hat nicht funktioniert, und ich versuchte , das Hinzufügen alle Arten von Variationen dieses wie domain.tld, domain.tld/*, *.domain.tldusw.

Was es für mich löste, war das Hinzufügen des eigentlichen Protokolls ; http://domain.tld/*ist die einzige, die ich brauche, damit es auf meiner Site funktioniert. Ich denke, ich muss hinzufügen, https://domain.tld/*wenn ich zu HTTPS wechseln möchte.

Update: Google hat den Platzhalter endlich so aktualisiert, dass er httpjetzt Folgendes enthält :

Eingabefeld für den Google Maps API-Referrer

Motorboje
quelle
1
Ich bestätige: Die einzige Kombination, die mir die Verwendung der API ermöglichte, warhttp://www.---.com/*
Marco Panichi
6
Diese Antwort ist die einzige, bei der mein Code funktioniert. Ich kann bestätigen, dass das von Google bereitgestellte Beispiel nicht funktioniert.
Jargs
Warum wurde auf diese Frage keine Antwort als "beste Antwort" markiert? Speziell der Powerbuoy.
Mohammad Saberi
1
Vielen Dank, @Google, dass Sie uns falsche Informationen gegeben haben. http://----.com/* ist das richtige Format.
Michael Yaeger
2
Wenn Sie mehrere Subdomains haben, können Sie http: //*.example.com und https: //*.example.com verwenden, um alle Basen
abzudecken
21

Komm schon Google, ihr seid schlauer als die API-Anmeldeinformationsseite es zulässt. (Ich weiß, weil ich zwei Söhne habe, die dort arbeiten.)

Die Liste der "Überweiser" ist weitaus wählerischer als es vermuten lässt. (Natürlich sollte es verzeihender sein.) Hier sind einige Regeln, deren Entdeckung mich Stunden gekostet hat:

Es gibt wahrscheinlich andere Regeln, aber dies ist ein langwieriges Ratespiel.

Rick James
quelle
1
Über die Antwort vor der Bearbeitung geht mir auch die Geduld aus. Es sieht so aus, als ob Platzhalter (*) nur am Ende einer Adresse ( http://my.site.com/*) oder in einer Subdomain ( http://*.site.com) funktionieren . In
ALLEN
1
Ich hatte fälschlicherweise eine Einschränkung festgelegt, um nur die Places-API zuzulassen (die Registerkarte direkt neben den Referrer-Einschränkungen). Dies führt zu demselben RefererNotAllowedMapError-Fehler.
Matt Greer
Hinzufügen von www. zu meinem Domainnamen wurde es für mich behoben. Ich bin nicht sicher, ob ein Platzhalter (*) am Ende der Domain hinzugefügt wird, wie dies (https://www.my-site.com/*)auch das Problem behoben hat.
Mugé
Meine ionic mobile App hat eine Domain als ionic: // app # / tabs. Wie würde ich es in die Beschränkungen aufnehmen. Ich habe viele Kombinationen ausprobiert, aber vergebens. Beispiel: ionic: // app # / tabs, httpionic: // app # / tabs, httpsionic: // app # / tabs, ionic: // *, ionic: // app # / *, httpionic: // *, ......
AUK4SO
@ AUK4SO - Das Nummernzeichen ( #) hat in URLs eine besondere Bedeutung. Siehe <a name=...>. Oder meintest du iconic://1234/foo?
Rick James
18

Gemäß der Dokumentation bedeutet "RefererNotAllowedMapError"

Die aktuelle URL zum Laden der Google Maps JavaScript-API wurde nicht zur Liste der zulässigen Verweise hinzugefügt. Überprüfen Sie die Referrer-Einstellungen Ihres API-Schlüssels in der Google Developers Console.

Ich habe die Google Maps Embed-API für meinen persönlichen / geschäftlichen Gebrauch eingerichtet und bisher keine HTTP-Verweise angegeben. Ich registriere keine Fehler. Ihre Einstellungen müssen Google glauben lassen, dass die von Ihnen besuchte URL nicht registriert oder zulässig ist.

Geben Sie hier die Bildbeschreibung ein

TRose
quelle
15

Denken Sie daran, dass es bis zu 5 Minuten dauern kann, bis die Einstellungen wirksam werden, wenn Sie sie nur ändern.

Putu De
quelle
15

Ich habe viele Referrer-Varianten ausprobiert und auch 5 Minuten gewartet, bis mir klar wurde, dass das Beispiel, das Google im Formularfeld ausfüllt, fehlerhaft ist. Sie zeigen:

*.example.com/*

Dies funktioniert jedoch nur, wenn Sie subdomain.oder www.vor Ihrem Domain-Namen haben. Folgendes hat für mich sofort funktioniert (ohne den führenden Punkt in Googles Beispiel):

*example.com/*
ow3n
quelle
8
Schlechte Idee - jemand könnte hackexample.comIhre API erstellen und verwenden
HyderA
3
@HyderA - Eine wahrscheinlichere Möglichkeit ist, dass jemand eine Reihe kostenloser Google-Konten registriert, um zusätzliche Kartenladevorgänge zu erhalten.
Ow3n
@HyderA sie würden immer noch den Schlüssel brauchen, also keine große Chance. Aber Sie haben Recht, immer noch ein potenzielles Risiko.
Eoin
Meine ionic mobile App hat eine Domain als ionic: // app # / tabs. Wie würde ich es in die Beschränkungen aufnehmen. Ich habe viele Kombinationen ausprobiert, aber vergebens. Beispiel: ionic: // app # / tabs, httpionic: // app # / tabs, httpsionic: // app # / tabs, ionic: // *, ionic: // app # / *, httpionic: // *, ......
AUK4SO
10

Laut den Google-Dokumenten geschah dies, weil die, urlauf der Sie die Google Maps-API verwenden, esnot registered inlist of allowed referrers

EDIT:

Aus Google Text & Tabellen

Alle Subdomains einer bestimmten Domain sind ebenfalls autorisiert.

Wenn http://example.com autorisiert ist, ist auch http://www.example.com autorisiert. Das Gegenteil ist nicht der Fall: Wenn http://www.example.com autorisiert ist, ist http://example.com nicht unbedingt autorisiert

Also, bitte konfigurieren Sie die http://testdomain.comDomain, dann wird Ihre http://www.testdomain.comArbeit beginnen.

RIYAJ KHAN
quelle
In meinem Fall wurde DNS für die Domain falsch konfiguriert. Zum Beispiel: www.testdomain.com hat gut funktioniert testdomain.com hat nicht funktioniert und einen Fehler verursacht
Tahir Khalid
1
Es scheint, dass die Logik davon umgekehrt ist? Es sei denn, mir fehlt etwas.
Twobob
10

Überprüfen Sie, ob auch das richtige APIS aktiviert ist.

Ich habe alle oben genannten Punkte ausprobiert, Sternchen, Domain-Tlds, Schrägstriche, Backslashes und alles, auch wenn ich am Ende nur eine URL als letzte Hoffnung eingegeben habe.

All dies hat nicht funktioniert und schließlich wurde mir klar, dass Google auch verlangt, dass Sie jetzt angeben, welche APIs Sie verwenden möchten (siehe Screenshot).

Geben Sie hier die Bildbeschreibung ein

Ich hatte keine, die ich aktivieren musste (für mich war das Maps JavaScript API)

Sobald ich es aktiviert habe, hat alles gut funktioniert mit:

http://www.example.com/ *

Ich hoffe das hilft jemandem! :) :)

David Robertson
quelle
8

Ich fand heraus, dass sogar Ihre HTTP Referreresgültigen, falschen API RestrictionsUrsachen sind Google Maps JavaScript API error: RefererNotAllowedMapError.

Beispielsweise:

  • Sie verwenden die Javascript-API für den Schlüssel.
  • Hinzufügen http://localhost/*zuApplication Restrictions / HTTP Referrences
  • Wählen Sie Maps Embed APIstattMaps Javascript API
  • Dies bewirkt RefererNotAllowedMapError
Hiroshi
quelle
Ja, in meinem Fall war Fehlklassifizierung das Problem
Andriy F.
Aber was ist mit der Sicherheit? Kann jemand meinen Schlüssel in localhost verwenden, wenn ich localhost zugelassen habe?
Kaushal
8

Platzhalter (Sternchen) sind im Subdomain-Teil NICHT erlaubt.

  • FALSCH: * .example.com / *
  • RECHTS: example.com/*

Vergessen Sie, was Google auf dem Platzhalter sagt, es ist nicht erlaubt.

Daniel Loureiro
quelle
Wie kann ich dann Folgendes hinzufügen: sc.maindomain.com/Survey/UpdateInspection/102
dE Source
1
Sie können einstellen alssc.maindomain.com/*
Daniel Loureiro
5

Es gibt viele vermeintliche Lösungen über mehrere Jahre hinweg, und einige funktionieren nicht mehr und andere nie. Daher funktioniert meine aktuelle Arbeit Ende Juli 2018.

Konfiguration:

Die JavaScript-API von Google Maps muss ordnungsgemäß funktionieren mit…

  • mehrere Domänen, die die API aufrufen: example.comundexample.net
  • beliebige Subdomains: user22656.example.comusw.
  • sowohl sichere als auch Standard-HTTP-Protokolle: http://www.example.com/undhttps://example.net/
  • unbestimmte Pfadstruktur (dh eine große Anzahl verschiedener URL-Pfade)

Lösung:

  • Verwenden Sie tatsächlich das Muster aus dem Platzhalter : <https (or) http>://*.example.com/*.
  • Das Protokoll wird nicht weggelassen, sondern es werden zwei Einträge pro Domäne hinzugefügt (einer pro Protokoll).
  • Ein zusätzlicher Eintrag für Subdomains (mit einem *.führenden Hostnamen).
  • Ich hatte das Gefühl, dass der RefererNotAllowedMapErrorFehler immer noch mit der richtigen Konfiguration auftrat (und lange gewartet hatte). Ich habe den Anmeldeinformationsschlüssel gelöscht und die Anfrage wiederholt (jetzt erhaltenInvalidKeyMapError ), neue Anmeldeinformationen erstellt (mit genau demselben Setup) und es hat seitdem funktioniert.
  • Das Hinzufügen von Protokoll und Domain schien keine Subdomains enthalten zu haben.
  • Für eine der Domänen sieht die Arbeitskonfiguration folgendermaßen aus:

Screenshot aus der Google API-Konfiguration

(Als Text :)

Accept requests from these HTTP referrers (web sites)
    https://*.example.com/*
    https://example.com/*
    http://*.example.com/*
    http://example.com/*
Dakab
quelle
In meinem Fall hat diese Lösung geholfen, hatte jedoch eine API-Einschränkung für die falsche API. Aus irgendeinem Grund wurde dieselbe Fehlermeldung zurückgegeben. Durch Ändern der API-Einschränkung von "Places API" in "Maps Javascript API" wurde das Problem behoben.
LMG
4

Geben Sie hier die Bildbeschreibung ein

Akzeptieren Sie Anfragen von diesen HTTP-Verweisen (Websites).

Schreiben Sie den Verzeichnispfad localhost

Ayan Chakraborty
quelle
3
Laut Googles Text soll es eine optionale Eigenschaft sein, und wenn es leer ist, sollte es funktionieren
Ejectamenta
@ayanchakraborty - Ich habe 10 verschiedene Kombinationen von localhost / index.html (und verschiedenen Pfaden) sowie verschiedene Kombinationen von Dateien ausprobiert: ///android_assets/www/index.html - aber nichts funktioniert. Der RefererNotAllowedMapError in der Konsole zeigt mir: Ihre zu autorisierende Site-URL: __file_url __ // android_asset / www / index.html # / tab / map //// `- aber dies und Variationen funktionieren auch nicht.
Rolinger
4

Ich habe den gleichen Fehler festgestellt:

Geben Sie hier die Bildbeschreibung ein

In diesem Link wird erläutert, wie Sie API-Schlüsseleinschränkungen einrichten: https://cloud.google.com/docs/authentication/api-keys#adding_http_restrictions

In meinem Fall bestand das Problem darin, dass ich diese Einschränkung verwendete:

HTTP-Verweise (Websites) Akzeptieren Sie Anforderungen von diesen HTTP-Verweisen (Websites) (optional). Verwenden Sie * für Platzhalter. Wenn Sie dieses Feld leer lassen, werden Anfragen von jedem Überweiser angenommen. Stellen Sie sicher, dass Sie Überweiser hinzufügen, bevor Sie diesen Schlüssel in der Produktion verwenden. https://*.example.net/*

Dies bedeutet, dass URLs wie https://www.example.net oder https://m.example.net oder https://www.example.net/San-salvador/ funktionieren würden. URLs wie https://example.net oder https://example.net oder https://example.net/San-salvador/ funktionieren jedoch nicht. Ich musste einfach einen zweiten Referrer hinzufügen:

https://example.net/*

Das hat das Problem für mich behoben.

Jaime Montoya
quelle
4

Ich füge 2 Website-Domains hinzu, setze "*" in der Subdomain funktioniert nicht, aber bestimmte Subdomain "WWW" und Nicht-Subdomain wurden für meine Websites mit demselben Google Map-API-Schlüssel bearbeitet.

Verwenden Sie "*" nicht in der Subdomain

Hoffe es hilft.

Pare
quelle
3

Sie zeigen einen Screenshot Ihrer API-Anmeldeinformationsseite, müssen jedoch auf "Browser-Taste 1" klicken und von dort aus Verweise hinzufügen.

ITwrx
quelle
3

Für tiefer verschachtelte Seiten

Wenn Sie beispielsweise ein Projekt in einem Ordner oder verschachtelte Seiten haben

http://yourdomain.com/your-folder/your-page Sie können dies in eingeben

http://yourdomain.com/*/*

Der wichtige Teil /*/*/*hängt davon ab, wie weit Sie gehen müssen

Es scheint, dass die *nicht übereinstimmen /oder in tiefere Pfade geraten.

Dadurch erhalten Sie vollen Domain-Zugriff, es sei denn, Sie haben eine tiefere Verschachtelung.

Radmation
quelle
3

Keine dieser Korrekturen funktionierte für mich, bis ich herausfand, dass dies daran liegen RefererNotAllowedMapErrorkann, dass kein Abrechnungskonto mit dem Projekt verknüpft ist. Stellen Sie also sicher, dass Sie Ihre kostenlose Testversion oder was auch immer aktivieren.

Owen Masback
quelle
3
  1. Dass Ihre Abrechnung aktiviert ist

  2. Dass Ihre Website zu Google Console hinzugefügt wurde

  3. Dass Ihre Website zu den Verweisen in Ihrer App hinzugefügt wird.

  4. (Machen Sie einen Platzhalter für www und keine www)

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

  1. Diese Javascript-Karten sind aktiviert und Sie verwenden die richtigen Anmeldeinformationen

  2. Dass die Website zu Ihrem DNS hinzugefügt wurde, um Ihre Google-Konsole oben zu aktivieren.

  3. Lächle, nachdem es funktioniert!

Morris
quelle
Ihre Liste der zulässigen Verweise finden Sie in der Google Cloud Platform-Webkonsole (console.cloud.google.com) unterAPIs & Services > Credentials > (your key) > Application restrictions > HTTP Referrers
Master of Ducks
3

Dies ist ein weiteres kleines Google-Produkt mit einer schrecklichen Implementierung.

Das Problem, das ich dabei festgestellt habe, ist, dass es nicht funktioniert, wenn Sie einen API-Schlüssel nach IP-Adresse einschränken ... ABER weit entfernt von Google, um diesen Punkt klar zu machen ... Erst bei der Fehlerbehebung und Recherche fand ich:

API-Schlüssel mit einer IP-Adressbeschränkung können nur mit Webdiensten verwendet werden, die für die Verwendung auf der Serverseite vorgesehen sind (z. B. die Geokodierungs-API und andere Webdienst-APIs). Die meisten dieser Webdienste verfügen über gleichwertige Dienste in der Maps-JavaScript-API (siehe z. B. Geokodierungsdienst). Um die clientseitigen Dienste der Maps JavaScript-API verwenden zu können, müssen Sie einen separaten API-Schlüssel erstellen, der mit einer Einschränkung für HTTP-Verweise gesichert werden kann (siehe Einschränken eines API-Schlüssels).

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

FFS Google ... Ziemlich wichtige Informationen, die beim Einrichten gut zu klären wären ...

PHP-B-Grader
quelle
2

Mit diesem Tipp von Google konnte ich endlich arbeiten: ( https://support.google.com/webmasters/answer/35179 )

Hier sind unsere Definitionen von Domain und Site. Diese Definitionen gelten speziell für die Überprüfung der Suchkonsole:

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

quelle
2

Ich hatte Mühe, dies auch zum Laufen zu bringen, aber hier sind einige Hinweise:

  • Die als Verweise festgelegten URLs umfassen httpzhttp://example.com/*
  • Die JavaScript-API von Google Maps wurde aktiviert
  • Auf diesem Konto wurde eine Abrechnung eingerichtet

Sobald all dies behoben war, wurden die Karten wie erwartet angezeigt.

FMCorz
quelle
1

Ich habe versucht, die Places-API (Autocomplete) zu verwenden, und musste auch die Maps Javascript-API in der Google Cloud Console aktivieren, bevor die Places-API funktionieren würde.

Brad
quelle
0

Überprüfen Sie Ihre Decklaration vor Ort. Verwenden Sie ein solches Skript-Tag, um die JavaScript-API von Google Maps zu laden

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

Ich verwende diese Deklaration auf meiner Wordpress-Site in der Datei function.php

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

Ich habe den API-Schlüssel für dieses Format festgelegt und es funktioniert einwandfrei

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

Diese Erklärung funktioniert nicht

*.my-domain-name.com/*
Nalaskow
quelle
0

Das Entfernen der Einschränkungen (auf Keine) hat bei mir funktioniert.

Roboterjunge
quelle
6
Das Entfernen der Einschränkungen wird als schlechte Praxis angesehen und macht Ihre API anfällig.
Mtness
2
@mtness ja natürlich aber das poster hat es schon zuerst ohne erfolg ausprobiert. Leider ist die Dokumentation von Google nicht mehr hilfreich. Jede Antwort hier bringt neue Tipps, es ist fast wie ein Ratespiel ...
James Wong - Reinstate Monica
0

Chrome Javascript - Konsole schlug ich die gesamte Seite Adresse in meiner Referrer Liste erklären, in diesem Fall http://mywebsite.com/map.htm Auch wenn die genaue Adresse ist http://www.mywebsite.com/map.htm - Ich hatte bereits Platzhalterstile aufgelistet, wie von anderen vorgeschlagen, aber nur so würde es für mich funktionieren.

KJB
quelle
0

Das hat bei mir funktioniert. Es gibt zwei Hauptkategorien von Einschränkungen unter den API-Tasteneinstellungen:

  • Application restrictions
  • API restrictions

Anwendungsbeschränkungen:

Fügen Sie unten im Abschnitt "Referrer" die URL Ihrer Website " http://www.grupocamaleon.com/boceto/aerial-simple.html " hinzu. Auf der rechten Seite des Abschnitts befinden sich Beispielregeln, die auf verschiedenen Anforderungen basieren.

Anwendungsbeschränkungen

API-Einschränkungen:

Unter API-Einschränkungen müssen Sie explizit "Maps Javascript API" aus der Dropdown-Liste auswählen , da unser eindeutiger Schlüssel (wahrscheinlich) nur zum Aufrufen der Google Maps API verwendet und gespeichert wird, wie Sie im folgenden Snap sehen können. Ich hoffe das funktioniert bei dir ..... hat bei mir funktioniert

Geben Sie hier die Bildbeschreibung ein

Überprüfen Sie Ihr Skript:

Das Problem kann auch aufgrund einer falschen Schlüsselzufuhr innerhalb des Skript-Tags auftreten. Es sollte so etwas sein wie:

  <script async defer src="https://maps.googleapis.com/maps/api/jskey=YOUR_API_KEY&callback=initMap"
  type="text/javascript"></script>
Tahir77667
quelle