谷歌API密钥 - 什么是服务器密钥和浏览器密钥

29
我在我的应用程序中使用 Google 地图,并使用以下格式的 URL,而无需 API 密钥 - 值,

我在我的应用程序中使用 Google 地图,并使用以下格式的 URL,而无需 API 密钥-值,

<script type="text/javascript"
      src="https://maps.googleapis.com/maps/api/js?sensor=SET_TO_TRUE_OR_FALSE">
    </script>

现在我需要使用API密钥来跟踪请求。根据示例,需要添加另一个API密钥查询字符串参数。

<script type="text/javascript"
      src="https://maps.googleapis.com/maps/api/js?key=API_KEY&sensor=SET_TO_TRUE_OR_FALSE">
</script>

但是,我收到了两个密钥, 一个用于服务器(IP地址限制),另一个用于浏览器应用程序(域级别限制),如下所示:

服务器密钥:XXXX 浏览器密钥:YYYYY

在我的应用程序中应该使用哪个密钥?我应该同时使用它们吗?找不到相关的好文章。


你应该有两个密钥,一个公钥放在你的JS中,另一个私钥用于解密从谷歌返回的内容,该内容使用你的私钥进行加密,只有你才应该拥有它。 - Hydra IO
我应该在我的JavaScript中使用“浏览器密钥”吗?那么什么时候应该使用Serverkey呢?这与Google帐户一起查看分析有关吗? - user2591141
3个回答

30

谷歌刚刚将浏览器密钥(Browser Keys)列为其 Web Services API 的弃用内容,因此此信息现在再次具有相关性。

以下是当前的定义:

服务器密钥(Server keys)

如果您的应用程序在服务器上运行,请创建和使用服务器密钥。不要在服务器代码以外的地方使用这个密钥。例如,不要将其嵌入到网页中。为了防止配额被盗,限制您的密钥,使只有来自您服务器源 IP 地址的请求才能被允许。

浏览器密钥(Browser keys)

如果您的应用程序在客户端(例如 Web 浏览器)上运行,请创建和使用浏览器密钥。为了防止您的密钥被用于未经授权的站点,只允许来自您管理的域的引荐。

(来源:https://developers.google.com/console/help/new/)


3
这应该是最佳答案,用户应该有一个真实而更具体的用户名 ;) - Yannis Dran
使用以下链接获取“浏览器密钥”:https://developers.google.com/maps/documentation/javascript/get-api-key#get-an-api-key,使用以下链接获取“服务器密钥”:https://developers.google.com/maps/documentation/directions/get-api-key#premium-key。 - Deke

5

1
我确实使用浏览器密钥,但我没有服务器密钥。我只是在搜索浏览器密钥与服务器密钥的区别。哈哈,所以我正在深入研究。我会更新。 - nil
3
浏览器密钥 - 浏览器密钥必须配置一些域名,例如*.abc.com/*,localhost/*。如果您的谷歌地图访问请求从这些域发送,那么就没问题了。但是,如果您在另一个应用程序(xyz.com)中使用此密钥,则会出现无效密钥错误...服务器密钥必须配置IP地址(IP白名单)。如果谷歌地图访问请求从这些IP发送,它将运行。否则,它将抛出错误。我已尝试了所有这些情况。 - Dhanuka777
@Dhanuka777 这两个密钥的有效期是多久? - Surabhil Sergy

1
截至目前(2018年初),我怀疑服务器密钥和浏览器密钥之间的区别微不足道,仅仅是概念上的区分。因为Web控制台允许您对任何密钥应用IP限制或引荐者限制。所以,对于同一个密钥,您可以应用一个引荐者限制,然后它就像浏览器密钥一样工作,而您应用IP限制,然后它就像服务器密钥一样工作。此外,我没有从this official help page找到有关服务器密钥与浏览器密钥的具体文档。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接