RefererNotAllowedMapError dell'API JavaScript di Google Maps


122

Stiamo cercando di sviluppare un'app di geoplacement per uno dei nostri clienti e vogliamo prima testarla nel nostro dominio.

Abbiamo firmato per l'API JavaScript di Google Maps e disponiamo di una chiave del browser valida e il nostro dominio, www.grupocamaleon.com, è stato autorizzato a utilizzare quella chiave.

Ma non possiamo rendere nemmeno l'esempio più semplice da eseguire senza errori.

Abbiamo, nel nostro dominio e con la nostra chiave, la seguente demo:

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

Ma non funziona e la console Firebug dice:

"Errore API di Google Maps: errore API di Google Maps: RefererNotAllowedMapError (link alla documentazione di Google su RefererNotAllowedMapError) URL del tuo sito da autorizzare: (1)"

Nella mia pagina delle credenziali manca la possibilità di aggiungere referrer da accettare, quindi le soluzioni che implicano l'aggiunta di referrer non sono possibili in questo momento.

La mia pagina delle credenziali:

inserisci qui la descrizione dell'immagine

Perché otteniamo quell'errore? Come possiamo aggiustarlo?


Possibile duplicato del referrer API di Google Maps non consentito . Il tuo codice funziona per me (con la mia chiave), quindi c'è qualcosa che non va nella tua chiave, nei referrer consentiti o nei servizi abilitati per l'uso con essa.
geocodezip

Ma non ho questa possibilità nella mia pagina delle credenziali, come puoi vedere nella mia risposta qui. Qualche suggerimento?
Grupo Camaleón Creativos

Beh, sono un principiante e non so ancora come usare questo sito correttamente. Scusate per il disagio. Ho modificato la mia domanda, aggiungendo informazioni sulla mia pagina delle credenziali. Alcune soluzioni citate prevedono l'aggiunta di referrer, cosa che al momento non posso fare.
Grupo Camaleón Creativos

Se non puoi modificare i riferimenti per la chiave, rimuovila o sostituiscila con una che controlli. Non è necessaria una chiave, ma includerla è vantaggiosa.
geocodezip

1
Ho creato una nuova chiave senza restrizioni APP o API, ha detto expiredKey per 10 minuti, quindi ho iniziato a funzionare. Successivamente ho provato ad aggiungere solo l'API Places, ma viene chiamato dal web e dice: Google Maps JavaScript API error: RefererNotAllowedMapErroranche dopo aver atteso. Poi ho provato Maps JavaScript APIe continuava a direRefererNotAllowedMapError , aggiornare la pagina e finalmente ha iniziato a funzionare dopo 2 minuti e 40 secondi. Quindi stai attento. Ma SENZA niente funziona per me, e così funziona Maps JavaScript APIsolo. Devi solo aspettare molto.
psycho brm

Risposte:


168

So che questa è una vecchia domanda che ha già diverse risposte, ma ho avuto lo stesso problema e per me il problema era che ho seguito l'esempio fornito su console.developers.google.com e ho inserito i miei domini nel formato *.domain.tld/*. Questo non ha funzionato affatto, e ho provato ad aggiungere tutti i tipi di varianti a questo come domain.tld, domain.tld/*, *.domain.tldetc.

Ciò che lo ha risolto per me è stato l'aggiunta anche del protocollo vero e proprio ; http://domain.tld/*è l'unico di cui ho bisogno perché funzioni sul mio sito. Immagino che dovrò aggiungere https://domain.tld/*se dovessi passare a HTTPS.

Aggiornamento: Google ha finalmente aggiornato il segnaposto per includere httpora:

Campo di immissione del referrer dell'API di Google Maps


1
Confermo: l'unica combinazione che mi ha permesso di utilizzare le API è statahttp://www.---.com/*
Marco Panichi

6
Questa risposta è l'unica che ha fatto funzionare il mio codice. Posso confermare che l'esempio fornito da Google non funziona.
Jargs

1
Grazie, @Google, per averci fornito informazioni false. http://----.com/* è il formato corretto.
Michael Yaeger

2
Se hai più sottodomini che puoi fare, http: //*.example.com e https: //*.example.com per coprire tutte le basi
tim.baker

1
Forse Google ha aggiornato quella funzione: per me funziona senza il protocollo. Ho example.com/*nel campo delle impostazioni e funziona dahttps://example.com/map
Andy

21

Andiamo su Google, voi ragazzi siete più intelligenti di quanto la pagina delle credenziali API lascia intendere. (Lo so perché ho due figli che lavorano lì.)

L'elenco dei "referrer" è molto più esigente di quanto si lascia intendere. (Ovviamente, dovrebbe essere più indulgente.) Ecco alcune regole che mi ci sono volute ore per scoprire:

Probabilmente ci sono altre regole, ma questo è un noioso gioco d'ipotesi.


1
Riguardo alla risposta prima della modifica, anch'io sto esaurendo la pazienza. Sembra che i caratteri jolly (*) funzionino solo alla fine di un indirizzo ( http://my.site.com/*) o in un sottodominio ( http://*.site.com). In TUTTI gli altri casi non funziona
Cristian Traìna

1
Avevo inserito erroneamente una limitazione per consentire solo l'API Places (la scheda accanto alle restrizioni del referrer). Ciò si traduce nello stesso errore RefererNotAllowedMapError.
Matt Greer

Aggiunta di www. al mio nome di dominio lo ha risolto per me. Non sono sicuro se l'aggiunta di un carattere jolly (*) alla fine del dominio, ad esempio (https://www.my-site.com/*)ha anche risolto il problema.
Mugé

la mia app mobile ionica ha il dominio ionic: // app # / tabs. Come lo includo nelle restrizioni. Ho provato tante combinazioni ma invano. Es: ionic: // app # / tabs, httpionic: // app # / tabs, httpsionic: // app # / tabs, ionic: // *, ionic: // app # / *, httpionic: // *, ......
AUK4SO

@ AUK4SO - Il cancelletto ( #) ha un significato speciale negli URL. Vedi <a name=...>. O intendevi iconic://1234/foo?
Rick James,

18

Secondo la documentazione, "RefererNotAllowedMapError" significa

L'URL corrente che carica l'API JavaScript di Google Maps non è stato aggiunto all'elenco dei referrer consentiti. Controlla le impostazioni del referrer della tua chiave API nella Google Developers Console.

Ho l'API di Google Maps Embed configurata per il mio uso personale / lavorativo e finora non ho specificato alcun referrer HTTP. Non registro errori. Le tue impostazioni devono far pensare a Google che l'URL che stai visitando non è registrato o consentito.

inserisci qui la descrizione dell'immagine


15

Ricorda solo che se lo modifichi, potrebbero essere necessari fino a 5 minuti affinché le impostazioni abbiano effetto.


15

Ho provato molte varianti di referrer e ho aspettato anche 5 minuti fino a quando mi sono reso conto che l'esempio che Google compila nel campo del modulo è difettoso. Loro mostrano:

*.example.com/*

Tuttavia, funziona solo se hai subdomain.o www.davanti al tuo nome di dominio. Quanto segue ha funzionato immediatamente per me (omettendo il punto iniziale dall'esempio di Google):

*example.com/*

9
hackexample.com
Pessima

3
@HyderA - Una possibilità più probabile è che qualcuno registri un gruppo di account Google gratuiti per ottenere caricamenti di mappe extra.
ow3n

@HyderA avrebbero ancora bisogno della chiave, quindi non una grande possibilità. Ma hai ragione, ancora un potenziale rischio.
Eoin

la mia app mobile ionica ha il dominio ionic: // app # / tabs. Come lo includo nelle restrizioni. Ho provato tante combinazioni ma invano. Es: ionic: // app # / tabs, httpionic: // app # / tabs, httpsionic: // app # / tabs, ionic: // *, ionic: // app # / *, httpionic: // *, ......
AUK4SO

10

Secondo i documenti di Google, ciò è accaduto perché il urlsu cui stai utilizzando l'API di Google Maps, not registeredinlist of allowed referrers

MODIFICARE :

Da Google Docs

Sono autorizzati anche tutti i sottodomini di un dominio specificato.

Se http://example.com è autorizzato, anche http://www.example.com è autorizzato. Non è vero il contrario: se http://www.example.com è autorizzato, http://example.com non è necessariamente autorizzato

Quindi, per favore configura il http://testdomain.comdominio, quindi http://www.testdomain.cominizierai a lavorare.


Nel mio caso il DNS era configurato in modo errato per il dominio. Ad esempio: www.testdomain.com ha funzionato bene testdomain.com non ha funzionato causando un errore
Tahir Khalid

1
Sembrerebbe che la logica di ciò sia invertita? A meno che non mi manchi qualcosa.
dueobob il

10

Verifica di avere abilitato anche l'APIS corretta.

Ho provato tutto quanto sopra, asterischi, dominio tld, barre in avanti, barre rovesciate e tutto, anche alla fine inserendo solo un URL come ultima speranza.

Tutto ciò non ha funzionato e alla fine mi sono reso conto che Google richiede anche che tu specifichi ora quali API vuoi utilizzare (vedi screenshot)

inserisci qui la descrizione dell'immagine

Non avevo quelli di cui avevo bisogno abilitati (per me quella era l'API JavaScript di Maps)

Una volta abilitato, tutto ha funzionato bene usando:

http://www.example.com/ *

Spero che aiuti qualcuno! :)



8

Ho scoperto che anche le tue HTTP Referreressono abbastanza valide, insieme di API Restrictionscause sbagliate Google Maps JavaScript API error: RefererNotAllowedMapError.

Per esempio:

  • Stai utilizzando l'API Javascript per la chiave.
  • Aggiungi http://localhost/*aApplication Restrictions / HTTP Referrences
  • Scegli Maps Embed APIinvece diMaps Javascript API
  • Questo causa RefererNotAllowedMapError

Sì, nel mio caso il problema era l'errata classificazione
Andriy F.

Ma per quanto riguarda la sicurezza? Chiunque può usare la mia chiave in localhost se ho autorizzato localhost?
Kaushal

5

Ci sono molte presunte soluzioni in diversi anni, e alcune non funzionano più e altre non lo hanno mai fatto, quindi la mia versione aggiornata funziona alla fine di luglio 2018.

Impostare:

L'API JavaScript di Google Maps deve funzionare correttamente con ...

  • più domini che chiamano l'API: example.comeexample.net
  • sottodomini arbitrari: user22656.example.com ecc.
  • protocolli HTTP sia sicuri che standard: http://www.example.com/ehttps://example.net/
  • struttura del percorso indefinito (cioè un gran numero di percorsi URL diversi)

Soluzione:

  • In realtà utilizzando il modello dal segnaposto: <https (or) http>://*.example.com/* .
  • Non omettere il protocollo, ma aggiungere due voci per dominio (una per protocollo).
  • Una voce aggiuntiva per i sottodomini (con estensione *. inizio il nome host).
  • Ho avuto la sensazione che l' RefererNotAllowedMapErrorerrore apparisse ancora utilizzando la configurazione corretta (e avendo atteso molto tempo). Ho cancellato la chiave della credenziale, ho ripetuto la richiesta (ora ottenendoInvalidKeyMapError ), creato nuove credenziali (utilizzando la stessa identica configurazione) e da allora ha funzionato.
  • L'aggiunta del semplice protocollo e dominio sembrava non includere i sottodomini.
  • Per uno dei domini, la configurazione di lavoro è simile a questa:

Screenshot dalla configurazione dell'API di Google

(Come testo :)

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

Nel mio caso, questa soluzione ha aiutato ma aveva la restrizione API sull'API sbagliata. Per qualche motivo, è stato restituito lo stesso messaggio di errore. La modifica della restrizione API da "Places API" a "Maps Javascript API" ha risolto il problema.
LMG

4

inserisci qui la descrizione dell'immagine

Accetta richieste da questi referrer HTTP (siti web)

Scrivi il percorso della directory localhost


3
secondo il testo di Google dovrebbe essere una proprietà opzionale e se è vuota dovrebbe funzionare
ejectamenta

@ayanchakraborty - Ho provato 10 diverse combinazioni di localhost / index.html (e vari percorsi) così come varie combinazioni di file: ///android_assets/www/index.html - ma niente funziona. Il RefererNotAllowedMapError nella console mi mostra: L'URL del tuo sito da autorizzare: __file_url __ // android_asset / www / index.html # / tab / map //// `- ma neanche questo e le varianti funzionano.
Rolinger

4

Ho riscontrato lo stesso errore:

inserisci qui la descrizione dell'immagine

Questo collegamento spiega come impostare le restrizioni della chiave API: https://cloud.google.com/docs/authentication/api-keys#adding_http_restrictions

Nel mio caso, il problema era che stavo usando questa restrizione:

Referrer HTTP (siti web) Accetta le richieste da questi referrer HTTP (siti web) (Facoltativo) Usa * per i caratteri jolly. Se lasci questo campo vuoto, le richieste verranno accettate da qualsiasi referrer. Assicurati di aggiungere referrer prima di utilizzare questa chiave nella produzione. https://*.example.net/*

Ciò significa che URL come https://www.example.net o https://m.example.net o https://www.example.net/San-salvador/ funzionerebbero. Tuttavia, URL come https://example.net o https://example.net o https://example.net/San-salvador/ non funzionerebbero. Avevo semplicemente bisogno di aggiungere un secondo referrer:

https://example.net/*

Questo ha risolto il problema per me.


4

Aggiungo 2 domini del sito web, l'impostazione "*" nel sottodominio non funziona ma è stato elaborato un sottodominio specifico "WWW" e non un sottodominio per i miei siti web utilizzando la stessa chiave API di Google Map.

non utilizzare "*" nel sottodominio

Spero che aiuti.


3

mostri uno screenshot della tua pagina delle credenziali api, ma devi cliccare su "Browser key 1" e andare da lì per aggiungere referrer.


3

Per pagine nidificate più profonde

Se hai un progetto in una cartella per esempio o pagine nidificate

http://yourdomain.com/your-folder/your-page puoi inserirlo in

http://yourdomain.com/*/*

La parte importante è /*/*/*dipendere da quanto lontano devi andare

Sembra che *non corrisponderanno /o entreranno in percorsi più profondi ..

Questo darà al tuo dominio l'accesso completo, a meno che tu non abbia una nidificazione più profonda di quella.


3

Nessuna di queste correzioni ha funzionato per me finché non ho scoperto che RefererNotAllowedMapErrorpuò essere causato dal mancato collegamento di un account di fatturazione al progetto. Quindi assicurati di attivare la tua prova gratuita o altro.


3
  1. Che la tua fatturazione sia abilitata

  2. Che il tuo sito web è stato aggiunto a Google Console

  3. Che il tuo sito web venga aggiunto ai referrer nella tua app.

  4. (fai un carattere jolly sia per www che per nessuno www)

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

  1. Che Javascript Maps sia abilitato e tu stia utilizzando le credenziali corrette

  2. Che il sito web sia stato aggiunto al tuo DNS per abilitare la tua Google Console sopra.

  3. Sorridi dopo che funziona!


Il tuo elenco di referrer consentiti è disponibile nella console web di Google Cloud Platform (console.cloud.google.com) sottoAPIs & Services > Credentials > (your key) > Application restrictions > HTTP Referrers
Master of Ducks

3

Questo è un altro prodotto Google scadente con un'implementazione terribile.

Il problema che ho riscontrato con questo è che se limiti una chiave API in base all'indirizzo IP, non funzionerà ... MA lontano da Google per chiarire questo punto ... Non è stato fino alla risoluzione dei problemi e alla ricerca che ho trovato:

Le chiavi API con una restrizione degli indirizzi IP possono essere utilizzate solo con servizi Web destinati all'uso dal lato server (come l'API Geocoding e altre API del servizio Web). La maggior parte di questi servizi Web dispone di servizi equivalenti all'interno dell'API JavaScript di Maps (ad esempio, vedere il servizio di geocodifica). Per utilizzare i servizi lato client dell'API JavaScript di Maps, è necessario creare una chiave API separata che può essere protetta con una restrizione dei referrer HTTP (vedere Limitazione di una chiave API).

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

FFS Google ... Informazioni piuttosto importanti che sarebbe utile chiarire durante la configurazione ...



2

Finalmente il mio funziona utilizzando questo suggerimento di Google: ( https://support.google.com/webmasters/answer/35179 )

Ecco le nostre definizioni di dominio e sito. Queste definizioni sono specifiche per la verifica di Search Console:

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

Ho faticato a far funzionare anche questo, ma ecco alcuni suggerimenti:

  • Gli URL impostati come referrer includono http, ad eshttp://example.com/*
  • L'API JavaScript di Google Maps è stata abilitata
  • La fatturazione è stata impostata su questo account

Una volta risolto tutto quanto sopra, le mappe vengono visualizzate come previsto.


1

Stavo tentando di utilizzare l' API Places (completamento automatico) e dovevo abilitare anche l' API Javascript di Maps da Google Cloud Console prima che l'API Places funzionasse.


0

Controlla la tua dichiarazione in loco. Per caricare l'API JavaScript di Google Maps, utilizza un tag script come questo

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

Sto usando questa dichiarazione sul mio sito Wordpress nel file function.php

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

Ho impostato la chiave API su questo formato e funziona bene

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

questa dichiarazione non funziona

*.my-domain-name.com/*

0

La rimozione delle restrizioni (a Nessuno) ha funzionato per me.


6
rimuovere le restrizioni è considerata una cattiva pratica e rende vulnerabile la tua API.
mtness

2
@mtness si ovviamente ma il poster l'ha già provato prima senza successo. Purtroppo la documentazione di Google non è più utile. Ogni risposta qui sta portando nuovi suggerimenti, è quasi come un gioco d'ipotesi ...
James Wong - Reinstate Monica


0

La console Javascript di Chrome mi ha suggerito di dichiarare l'intero indirizzo della pagina nel mio elenco di referrer HTTP, in questo caso http://mywebsite.com/map.htm Anche se l'indirizzo esatto è http://www.mywebsite.com/map.htm - Avevo già gli stili con caratteri jolly elencati come suggerito da altri, ma questo era l'unico modo in cui avrebbe funzionato per me.


0

Questo ha funzionato per me. Esistono 2 principali categorie di restrizioni nelle impostazioni delle chiavi API:

  • Application restrictions
  • API restrictions

Limitazioni dell'applicazione:

In fondo alla sezione Referrer aggiungi l'URL del tuo sito web " http://www.grupocamaleon.com/boceto/aerial-simple.html ". Ci sono regole di esempio sul lato destro della sezione in base a vari requisiti.

Limitazioni dell'applicazione

Restrizioni API:

In Restrizioni API devi selezionare esplicitamente "Maps Javascript API" dall'elenco a discesa poiché la nostra chiave univoca verrà utilizzata solo per chiamare l'API di Google Maps (probabilmente) e salvarla come puoi vedere nello snap sottostante. Spero che questo funzioni per te ..... ha funzionato per me

inserisci qui la descrizione dell'immagine

Controlla il tuo script:

Inoltre, il problema potrebbe sorgere a causa di un'alimentazione errata delle chiavi all'interno del tag dello script. Dovrebbe essere qualcosa come:

  <script async defer src="https://maps.googleapis.com/maps/api/jskey=YOUR_API_KEY&callback=initMap"
  type="text/javascript"></script>
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.