API 密钥 浏览器 API 密钥与此 API 一起使用时不能有引用者限制
Posted
技术标签:
【中文标题】API 密钥 浏览器 API 密钥与此 API 一起使用时不能有引用者限制【英文标题】:API key Browser API keys cannot have referer restrictions when used with this API 【发布时间】:2021-06-28 05:15:40 【问题描述】:我正在尝试对地理编码进行编程。我创建了 API 密钥,但是当我将它添加到我的网站代码中时,我什么也没得到,但是当我不使用 API 时,一切正常。当我发送时:
https://maps.googleapis.com/maps/api/geocode/json?address=".$adres."&key=KLUCZ_XXX
我收到回复:
Browser API keys cannot have referer restrictions when used with this API.
如果我使用:
https://maps.googleapis.com/maps/api/geocode/json?address=".$adres"
结果正确,但每天的查询次数有限。
关键约束:引用 HTTP (Web) - 设置为从中进行查询的域。接口 Google Maps Geocoding API 已开启。
API 密钥是否也必须在其他地方激活才能工作?
【问题讨论】:
【参考方案1】:听起来您可能在服务器端进行 API 调用。我今天早些时候遇到了这个问题。由于您已对 API 密钥设置了引用者限制,因此它将仅限于使用 Web 服务 API(包括地理编码 API)在浏览器上执行。即使在请求标头中手动设置引用者,它也对我不起作用。您可以在此页面上找到其他 Web 服务 API:https://developers.google.com/maps/web-services/
重要提示:如果您使用任何具有引用限制的 API 密钥的 Web 服务 API,您的请求将失败并显示错误消息:“与此 API 一起使用时,API 密钥不能有引用限制。”您应该切换到使用服务器限制。
您需要创建一个单独的密钥以在服务器端使用。您可以通过使用 IP 地址而不是浏览器引用来限制访问,将您的限制从 浏览器限制 更改为 服务器限制。
请参阅 Maps API 常见问题解答中有关将密钥类型切换为服务器受限密钥的部分:https://developers.google.com/maps/faq#switch-key-type
或者,您可以继续使用浏览器密钥和地理编码客户端 (javascript),然后通过 ajax 将结果返回到后端。
【讨论】:
但是如果键没有任何限制,即“无”在此处被选中。当我们在服务器端使用密钥时会出现这个错误吗? 这里也一样。从浏览器使用时看到此错误。 @SanjayKumarNS 我也遇到过这种情况。我有限制为“无”的密钥,然后它可以正常工作。【参考方案2】:如果服务器端地理编码不是一个选项,您应该使用来自Google Javascript API 的地理编码器。您可以对该 API 设置 HTTP 引用限制。
谷歌自己说to avoid the Non-Javascript Geocoder API for dynamic geocoding:
此服务通常是为静态地理编码而设计的 (预先知道)将应用程序内容放置在 地图;此服务并非旨在实时响应用户 输入。对于动态地理编码(例如,在用户界面中 元素),请参阅 Maps JavaScript API 客户端的文档 地理编码器和/或 Google Play 服务位置 API。
【讨论】:
以上是关于API 密钥 浏览器 API 密钥与此 API 一起使用时不能有引用者限制的主要内容,如果未能解决你的问题,请参考以下文章