Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

842
Visualizações
API de Google Cloud Translate y problema de restricción de referencia

Tengo un problema frustrante con la API de Google Cloud Translate.

Configuré correctamente la restricción de la clave a algunos dominios incluyendo *.example.com/ * (sin espacio en blanco al final)

Lanzo el script en la URL https://www.example.com/translate y tengo el siguiente mensaje:

 "status": "PERMISSION_DENIED", "details": [ { "@type": "type.googleapis.com/google.rpc.ErrorInfo", "reason": "API_KEY_HTTP_REFERRER_BLOCKED", "domain": "googleapis.com",

Cuando elimino la restricción, todo funciona, pero necesito la restricción para evitar el mal uso/abuso.

Además, uso esta misma clave API para otras API de aplicaciones de Google (mapas, autenticación, etc.) y funciona perfectamente desde este dominio...

Tan raro.

¿Tiene alguna idea o forma de investigar mejor este problema? ¿Cómo puedo saber el referente que ve Google? (o cualquier servicio externo)

Muchas gracias !!


Editar :

codigo php:

 require_once(APPPATH . "libraries/GoogleTranslate/vendor/autoload.php"); require_once(APPPATH . "libraries/GoogleTranslate/vendor/google/cloud-translate/src/V2/TranslateClient.php"); $translate = new TranslateClient([ 'key' => 'xXXXx' ]); // Translate text from english to french. $result = $translate->translate('Hello world!', [ 'target' => 'fr' ]); echo $result['text'];

Mensaje de error completo:

 Type: Google\Cloud\Core\Exception\ServiceException Message: { "error": { "code": 403, "message": "Requests from referer \u003cempty\u003e are blocked.", "errors": [ { "message": "Requests from referer \u003cempty\u003e are blocked.", "domain": "global", "reason": "forbidden" } ], "status": "PERMISSION_DENIED", "details": [ { "@type": "type.googleapis.com/google.rpc.ErrorInfo", "reason": "API_KEY_HTTP_REFERRER_BLOCKED", "domain": "googleapis.com", "metadata": { "service": "translate.googleapis.com", "consumer": "projects/XXXXX" } } ] } } Filename: htdocs/application/libraries/GoogleTranslate/vendor/google/cloud-core/src/RequestWrapper.php Line Number: 368
over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Leí los comentarios y parece que lo estás haciendo todo bien. Te recomendaría probar:

  • Este mensaje de error puede aparecer porque configuró restricciones de API en la clave de API, ¿es este el caso? Tal vez esté restringiendo esta API específica.
  • Si no está configurando ninguna restricción de API, ¿es posible intentar agregar una IP en lugar del dominio solo con fines de prueba?
over 4 years ago · Santiago Trujillo Relatório

0

Dejaré aquí mis ideas discutidas en el Public Issue Tracker.

La restricción HTTP funciona según lo previsto, pero el referer siempre está vacío porque no está configurado de forma predeterminada. Sin embargo, se puede agregar manualmente, así que en lugar de hacer:

 -$translate = new TranslateClient([ 'key' => 'XXX' ]);

Debe especificar el referente:

 -$translate = new TranslateClient([ 'key' => '[API_KEY]', 'restOptions' => [ 'headers' => [ 'referer' => '*.[URL].com/*' ] ] ]);

Debes tener en cuenta que este tipo de solicitudes se pueden enviar desde cualquier computadora (si tienes la clave) ya que no estás restringiendo el dominio donde se realiza la solicitud, solo verificando quién es el remitente (y puedes configurarlo). a mano). Además, los clientes de API que se ejecutan en un navegador web exponen sus claves de API públicamente ; por eso te recomiendo que uses cuentas de servicio en su lugar. Para más información: añadir restricciones de aplicación .


Con respecto a la referencia HTTP , este es básicamente un campo de encabezado que, básicamente, los navegadores web colocan para que la página web sepa de dónde viene el usuario. Por ejemplo, si hace clic en el enlace anterior ( referencia HTTP ), su campo de referer será esta página.


En resumen, dado que puede colocar cualquier referer en el encabezado de una solicitud, esto es bastante similar a no tener ningún tipo de restricción. De hecho, se recomienda utilizar cuentas de servicio . Para resolver este problema fácilmente, agregue el referer manualmente en los encabezados como se expone en el código anterior.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda