RefererNotAllowedMapError da API JavaScript do Google Maps


122

Estamos tentando desenvolver um aplicativo de localização geográfica para um de nossos clientes e queremos testá-lo primeiro em seu próprio domínio.

Assinamos a API JavaScript do Google Maps e temos uma chave de navegador válida e nosso domínio, www.grupocamaleon.com, foi autorizado a usar essa chave.

Mas não podemos fazer o exemplo mais fácil de executar sem erros.

Temos, em nosso domínio e com nossa chave, a seguinte demonstração:

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

Mas isso não funciona, e o console do Firebug diz:

"Erro na API do Google Maps: Erro na API do Google Maps: RefererNotAllowedMapError (link para a documentação do Google em RefererNotAllowedMapError) URL do seu site a ser autorizado: (1)"

Minha página de credenciais está sem a possibilidade de adicionar referenciadores para aceitar, portanto, soluções que envolvem a adição de referenciadores não são possíveis no momento.

Minha credencial Página:

insira a descrição da imagem aqui

Por que recebemos esse erro? Como podemos arranjá-lo?


Possível duplicação do referenciador da API do Google Maps não permitida . Seu código funciona para mim (com minha chave); portanto, há algo errado com sua chave, os referenciadores permitidos ou os serviços habilitados para uso com ela.
geocodezip

Mas não tenho essa possibilidade na minha página de credenciais, como você pode ver na minha resposta aqui. Alguma dica?
Grupo Camaleón Creativos 11/02/16

Bem, eu sou um novato e ainda não sei como usar este site corretamente. Desculpe-me pelas inconveniências. Editei minha pergunta, adicionando informações na minha página de credenciais. Algumas soluções citadas envolvem a adição de referenciadores, o que não posso fazer no momento.
Grupo Camaleón Creativos 12/02/16

Se você não conseguir alterar os referenciadores da chave, remova-a ou substitua-a por uma que você controla. Uma chave não é necessária, mas há benefícios em incluir uma.
68668 # georgezip #

1
Criei uma nova chave sem restrições de APP ou API, que dizia expirouKey por 10 minutos e começou a funcionar. Em seguida, tentei adicionar apenas a API do Google Places, mas ela está sendo chamada da Web e diz: Google Maps JavaScript API error: RefererNotAllowedMapErrormesmo depois de esperar. Então eu tentei Maps JavaScript APIe continuei dizendo RefererNotAllowedMapError, tentei atualizar a página e finalmente começou a funcionar após 2 minutos e 40 segundos. Então assista o inferno. Mas SEM nada funciona para mim, e o mesmo acontece Maps JavaScript APIapenas. Você apenas tem que esperar muito.
Psycho brm

Respostas:


167

Sei que essa é uma pergunta antiga que já tem várias respostas, mas tive o mesmo problema e, para mim, o problema foi que segui o exemplo fornecido no console.developers.google.com e inseri meus domínios no formato *.domain.tld/*. Isso não funcionou e tentei adicionar todos os tipos de variações domain.tld, como domain.tld/*,*.domain.tld etc.

O que resolveu para mim foi adicionar o protocolo atual também; http://domain.tld/*é o único que eu preciso para que ele funcione no meu site. Eu acho que vou precisar adicionarhttps://domain.tld/* se eu mudar para HTTPS.

Atualização: o Google finalmente atualizou o espaço reservado para incluir httpagora:

Campo de entrada do referenciador da API do Google Maps


1
Confirmo: a única combinação que me permitiu o uso da API foihttp://www.---.com/*
Marco Panichi

6
Essa resposta é a única que conseguiu meu código funcionar. Posso confirmar que o exemplo que o Google fornece não funciona.
Jargs

Por que esta pergunta não teve nenhuma resposta marcada como a "melhor resposta"? Especialmente o powerbuoy.
Mohammad Saberi

1
Obrigado, @Google, por nos fornecer informações falsas. http://----.com/* é o formato correto.
Michael Yaeger

2
Se você tiver vários subdomínios, http: //*.example.com e https: //*.example.com para cobrir todas as bases
tim.baker

21

Vamos lá Google, vocês são mais inteligentes do que a página Credencial da API permite. (Eu sei porque tenho dois filhos trabalhando lá.)

A lista de "referenciadores" é muito mais exigente do que permite. (Obviamente, deve ser mais indulgente.) Aqui estão algumas regras que levei horas para descobrir:

Provavelmente existem outras regras, mas este é um jogo de adivinhação tedioso.


1
Sobre a resposta antes da edição, também estou ficando sem paciência. Parece que os curingas (*) funcionam apenas no final de um endereço ( http://my.site.com/*) ou em um subdomínio ( http://*.site.com). Em todos os outros casos, não funciona #
Cristian Traìna

1
Coloquei incorretamente uma restrição para permitir apenas a API do Google Places (a guia ao lado das restrições do referenciador). Isso resulta no mesmo erro RefererNotAllowedMapError.
Matt Greer

Adicionando www. para o meu nome de domínio corrigi-lo para mim. Não tenho certeza se adicionar um curinga (*) ao final do domínio, como (https://www.my-site.com/*)também corrigiu o problema.
Mugé 12/02/19

meu aplicativo móvel iônico tem domínio como ionic: // app # / tabs. Como eu o incluiria nas restrições. Eu tentei muitas combinações, mas em vão. Ex: ionic: // app # / tabs, httpionic: // app # / tabs, httpsionic: // app # / tabs, ionic: // *, ionic: // app # / *, httpionic: // *, ......
AUK4SO

@ AUK4SO - O sinal de libra ( #) tem um significado especial nos URLs. Veja <a name=...>. Ou você quis dizer iconic://1234/foo?
Rick James

18

De acordo com a documentação, 'RefererNotAllowedMapError' significa

O URL atual que carrega a API JavaScript do Google Maps não foi adicionado à lista de referenciadores permitidos. Verifique as configurações do referenciador da sua chave de API no Google Developers Console.

Eu tenho a API de incorporação do Google Maps configurada para uso pessoal / profissional e, até o momento, não especificou nenhum referenciador HTTP. Não registro erros. Suas configurações devem fazer o Google pensar que o URL que você está visitando não é registrado ou permitido.

insira a descrição da imagem aqui


15

Lembre-se de que, se você apenas alterar, pode levar até 5 minutos para que as configurações entrem em vigor.


15

Tentei muitas variações de referenciadores e esperei 5 minutos até perceber que o exemplo que o Google preenche no campo de formulário é defeituoso. Eles mostram:

*.example.com/*

No entanto, isso só funciona se você tiver subdomain.ou estiver www.na frente do seu nome de domínio. O seguinte funcionou para mim imediatamente (omitindo o período principal do exemplo do Google):

*example.com/*

8
Bad idea - alguém poderia criar hackexample.come usar sua API
#

3
@ HyderA - Uma possibilidade mais provável é que alguém registre várias contas do Google gratuitas para obter carregamentos extras no mapa.
Ow3n 9/08/19

@HyderA eles ainda precisariam da chave, então não há uma chance enorme. Mas você está certo, ainda é um risco potencial.
Eoin

meu aplicativo móvel iônico tem domínio como ionic: // app # / tabs. Como eu o incluiria nas restrições. Eu tentei muitas combinações, mas em vão. Ex: ionic: // app # / tabs, httpionic: // app # / tabs, httpsionic: // app # / tabs, ionic: // *, ionic: // app # / *, httpionic: // *, ......
AUK4SO

10

De acordo com os documentos do Google Isso aconteceu porque o urlem que você está usando a API do Google Maps, que not registeredemlist of allowed referrers

EDIT:

Do Google Docs

Todos os subdomínios de um domínio especificado também são autorizados.

Se http://example.com estiver autorizado, o http://www.example.com também estará autorizado. O inverso não é verdadeiro: se http://www.example.com estiver autorizado, http://example.com não está necessariamente autorizado

Então, por favor, configure o http://testdomain.comdomínio, então você http://www.testdomain.comcomeçará a trabalhar.


No meu caso, foi um DNS configurado incorretamente para o domínio. Por exemplo: www.testdomain.com funcionou bem testdomain.com não funcionou, causando um erro
Tahir Khalid

1
Parece que a lógica disso é invertida? A menos que esteja faltando alguma coisa.
twobob

10

Verifique se você tem o APIS correto ativado também.

Tentei todas as opções acima, asteriscos, domínios de domínio, barras, barras invertidas e tudo mais, mesmo no final, apenas inserindo um URL como última esperança.

Tudo isso não funcionou e, finalmente, percebi que o Google também exige que você especifique agora quais APIs deseja usar (veja a captura de tela)

insira a descrição da imagem aqui

Eu não tinha os que eu precisava ativar (para mim era a API JavaScript do Google Maps)

Depois de ativá-lo, tudo funcionou bem usando:

http://www.example.com/ *

Espero que ajude alguém! :)


8

Eu descobri que mesmo você HTTP Referreresé válido o suficiente, conjunto de API Restrictionscausas errado Google Maps JavaScript API error: RefererNotAllowedMapError.

Por exemplo:

  • Você está usando a API Javascript para a chave.
  • Adicionar http://localhost/*aApplication Restrictions / HTTP Referrences
  • Escolha em Maps Embed APIvez deMaps Javascript API
  • Isso causa RefererNotAllowedMapError

Sim, no meu caso, a classificação incorreta foi o problema #
Andriy F. 28/11

Mas e a segurança? Alguém pode usar minha chave no localhost se eu permitir localhost?
Kaushal


5

Há muitas supostas soluções ao longo de vários anos, e algumas não funcionam mais e outras nunca. Portanto, minha atualização está funcionando no final de julho de 2018.

Configuração:

A API JavaScript do Google Maps deve funcionar corretamente com…

  • vários domínios chamando a API: example.com eexample.net
  • subdomínios arbitrários: user22656.example.com etc.
  • protocolos HTTP seguros e padrão: http://www.example.com/ ehttps://example.net/
  • estrutura de caminho indefinido (ou seja, um grande número de caminhos de URL diferentes)

Solução:

  • Na verdade, usando o padrão do espaço reservado: <https (or) http>://*.example.com/* .
  • Não omitindo o protocolo, mas adicionando duas entradas por domínio (uma por protocolo).
  • Uma entrada adicional para subdomínios (com um *. o nome do host à esquerda).
  • Tive a sensação de que o RefererNotAllowedMapErrorerro ainda aparecia usando a configuração adequada (e tendo esperado bastante tempo). Excluí a chave de credencial, repeti a solicitação (agora obtendoInvalidKeyMapError ), criei novas credenciais (usando exatamente a mesma configuração) e funcionou desde então.
  • Adicionar mero protocolo e domínio parecia não incluir subdomínios.
  • Para um dos domínios, a configuração de trabalho se parece com isso:

Captura de tela da configuração da API do Google

(Como texto :)

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

No meu caso, essa solução ajudou, mas teve Restrição de API na API errada. Por algum motivo, a mesma mensagem de erro foi retornada. A alteração da restrição da API de "API do Google Places" para "Google Maps Javascript API" corrigiu o problema.
LMG

4

insira a descrição da imagem aqui

Aceitar solicitações desses referenciadores HTTP (sites)

Gravar o caminho do diretório localhost


3
segundo o texto de Google é suposto para ser uma propriedade opcional e se for em branco ele deve funcionar
ejectamenta

@ayanchakraborty - Tentei 10 combinações diferentes de localhost / index.html (e vários caminhos), bem como várias combinações de arquivo: ///android_assets/www/index.html - mas nada está funcionando. O RefererNotAllowedMapError no console está me mostrando: O URL do seu site deve ser autorizado: __file_url __ // android_asset / www / index.html # / tab / map //// `- mas isso e as variações também não funcionam.
Rolinger

4

Eu experimentei o mesmo erro:

insira a descrição da imagem aqui

Este link fala sobre como configurar restrições de chave da API: https://cloud.google.com/docs/authentication/api-keys#adding_http_restrictions

No meu caso, o problema era que eu estava usando esta restrição:

Referenciadores HTTP (sites) Aceite solicitações desses referenciadores HTTP (sites) (Opcional) Use * 's para curingas. Se você deixar em branco, serão aceitas solicitações de qualquer referenciador. Certifique-se de adicionar referenciadores antes de usar essa chave na produção. https://*.example.net/*

Isso significa que URLs como https://www.example.net ou https://m.example.net ou https://www.example.net/San-salvador/ funcionariam. No entanto, URLs como https://example.net ou https://example.net ou https://example.net/San-salvador/ não funcionariam. Eu simplesmente precisava adicionar um segundo referenciador:

https://example.net/*

Isso resolveu o problema para mim.


4

Eu adiciono dois domínios de site, o conjunto "*" no subdomínio não está funcionando, mas o subdomínio específico "WWW" e o não subdomínio foram trabalhados para meus sites usando a mesma chave da API do Google Map.

não use "*" no subdomínio

Espero que ajude.


3

você mostra uma captura de tela da sua página de credenciais da API, mas precisa clicar em "Chave do navegador 1" e depois para adicionar referenciadores.


3

Para páginas aninhadas mais profundas

Se você tiver um projeto em uma pasta, por exemplo, ou páginas aninhadas

http://yourdomain.com/your-folder/your-page você pode inserir isso em

http://yourdomain.com/*/*

A parte importante é /*/*/*depender de quão longe você precisa ir

Parece que o *não corresponderá /ou entrará em caminhos mais profundos.

Isso dará ao seu domínio total acesso, a menos que você tenha um aninhamento mais profundo do que isso.


3

Nenhuma dessas correções funcionava para mim até que eu descobri que isso RefererNotAllowedMapErrorpode ser causado por não ter uma conta de cobrança vinculada ao projeto. Portanto, certifique-se de ativar seu teste gratuito ou o que for.


3
  1. Que seu faturamento está ativado

  2. Que seu site foi adicionado ao Google Console

  3. Que seu site é adicionado aos referenciadores no seu aplicativo.

  4. (faça um curinga para www e nenhum www)

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

  1. O Javascript Maps está ativado e você está usando as credenciais corretas

  2. Que o site foi adicionado ao seu DNS para ativar o Google Console acima.

  3. Sorria depois que funciona!


Sua lista de referenciadores permitidos pode ser encontrada no console da web do Google Cloud Platform (console.cloud.google.com) emAPIs & Services > Credentials > (your key) > Application restrictions > HTTP Referrers
Master of Ducks

3

Este é outro produto do Google com uma implementação terrível.

O problema que encontrei com isso é que, se você restringir uma chave de API por endereço IP, ela não funcionará ... MAS está longe do Google para esclarecer esse ponto ... Não foi até encontrar e solucionar problemas e pesquisas:

As chaves de API com restrição de endereços IP só podem ser usadas com serviços da Web destinados ao uso do lado do servidor (como a API de geocodificação e outras APIs de serviço da Web). A maioria desses serviços da Web possui serviços equivalentes na API JavaScript do Google Maps (por exemplo, consulte o Serviço de geocodificação). Para usar os serviços do lado da API do Google Maps JavaScript API, você precisará criar uma chave de API separada que possa ser protegida com uma restrição de referenciadores HTTP (consulte Restringindo uma chave de API).

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

FFS Google ... Informações muito importantes que seriam boas para esclarecer sobre a instalação ...



2

Finalmente, trabalhei com o meu usando esta dica do Google: ( https://support.google.com/webmasters/answer/35179 )

Aqui estão nossas definições de domínio e site. Essas definições são específicas para a verificação do 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

Também lutei para fazer isso funcionar, mas aqui estão algumas dicas:

  • Os URLs definidos como referenciadores incluem http, por exemplo,http://example.com/*
  • A API JavaScript do Google Maps foi ativada
  • O faturamento foi configurado nesta conta

Uma vez resolvido tudo isso, os mapas são exibidos conforme o esperado.


1

Eu estava tentando usar a API do Google Places (preenchimento automático) e também precisava ativar a API Javascript do Google Maps no Google Cloud Console antes que a API do Google Places funcionasse.


0

Verifique a sua deck deck no local. Para carregar a API JavaScript do Google Maps, use uma tag de script como esta

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

Eu uso esta declaração no meu site Wordpress no arquivo function.php

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

Eu configurei a chave da API nesse formato e funciona bem

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

esta declaração não está funcionando

*.my-domain-name.com/*

0

A remoção das restrições (para Nenhuma) funcionou para mim.


6
remover as restrições é considerado uma prática ruim e torna sua API vulnerável.
mtness

2
@mtness sim, obviamente, mas o pôster já tentou primeiro sem sucesso. Infelizmente, a documentação do Google não é mais útil. Cada resposta aqui estão trazendo novas dicas, é quase como um jogo de adivinhação ...
James Wong - Reintegrar Monica


0

O console Javascript do Chrome sugeriu que eu declarasse o endereço da página inteira na minha lista de referenciadores HTTP, neste caso http://mywebsite.com/map.htm Mesmo que o endereço exato seja http://www.mywebsite.com/map.htm - Eu já tinha estilos curinga listados como sugerido por outras pessoas, mas essa era a única maneira de funcionar para mim.


0

Isso funcionou para mim. Existem duas categorias principais de restrições nas configurações da chave API:

  • Application restrictions
  • API restrictions

Restrições de aplicação:

Na parte inferior da seção Referenciador, adicione o URL do site " http://www.grupocamaleon.com/boceto/aerial-simple.html ". Existem exemplos de regras no lado direito da seção, com base em vários requisitos.

Restrições de aplicativos

Restrições de API:

Nas restrições da API, você deve selecionar explicitamente 'API Javascript do Google Maps' na lista suspensa, pois nossa chave exclusiva será usada apenas para chamar a API do Google Maps (provavelmente) e salvá-la, como você pode ver no snap abaixo. Espero que isso funcione para você ..... trabalhou para mim

insira a descrição da imagem aqui

Verifique seu script:

Além disso, o problema pode surgir devido à alimentação incorreta de chaves na tag de script. Deve ser algo como:

  <script async defer src="https://maps.googleapis.com/maps/api/jskey=YOUR_API_KEY&callback=initMap"
  type="text/javascript"></script>
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.