我一直在使用通过Google进行地理编码查找的网站。我现在已经测试了一段时间了。
https://maps.googleapis.com/maps/api/geocode/json?address=1600+Pennsylvania+Ave+NW,+Washington,+DC&key=XXXXXXXXXXXXXXXXXXXXXXXXXXX
我已将该密钥锁定到特定服务器。我突然发现地理编码查找错误。 Google的回复是:
{
error_message: "Browser API keys cannot have referer restrictions when used with this API.",
results: [ ],
status: "REQUEST_DENIED"
}
当我尝试一个没有API密钥的简单请求时,似乎工作正常。在这里你可以自己试试。复制并粘贴浏览器网址中的下一行并返回。
https://maps.googleapis.com/maps/api/geocode/json?address=1600+Pennsylvania+Ave+NW,+Washington,+DC
现在,我可能不应该在口中看到礼物马,但整件事情似乎很奇怪。如果我今天删除了我的API密钥,那么依赖于Lat / Lng转换地址的网站明天都会失败吗?
是否有其他人在使用Google地图和GeoCode查找时遇到奇怪的失败?是否有人知道Google地图/ GeoCoding团队的系统内容或政策变更?
编辑,更新: 所以这个缺陷持续了大约40分钟,从太平洋标准时间晚上9点10分到太平洋标准时间晚上10点之前。现在似乎已经修好了。
对评论的回应:嗯。我一直在将API密钥视为:
服务器密钥:如果您的应用程序在a上运行,请创建并使用服务器密钥 服务器。不要在服务器代码之外使用此密钥。例如, 不要将其嵌入网页。为了防止配额被盗,限制你的 密钥,以便只允许来自您的服务器的请求'来源IP 地址。
浏览器键:如果运行应用程序,则创建并使用浏览器键 客户端,例如Web浏览器。防止使用您的密钥 在未经授权的网站上,只允许来自您的域名的推荐 施用
我确实在没有中间服务器的情况下直接从用户进行完整查询。我无法在那里安全地使用服务器密钥。所以我已经阅读了您的输入,它肯定会说服务器密钥用于地理编码。但是,这确实意味着没有人应该允许浏览器/客户端交互来处理地理编码查找。坦率地说,我只是认为这篇文章已经过时了,而且有点不准确。
虽然你可能是对的,但整件事看起来很奇怪。我原以为如果Geocode需要从服务器(仅)进行查找,而不是通过浏览器(从未)从Web应用程序进行查找,那么就会对该效果进行直接评论。
哦,带有服务器防护的浏览器密钥似乎再次正常工作。再一次,我只是说整件事情很奇怪。我将此视为对Google地理编码服务器的临时打嗝。
是的,我当然可以为一次往返Ajax调用引入一个API服务器,用服务器密钥安全地进行查找,但重点是什么?我有没有看到的好处?我想我可以添加像nonce这样的元素来保护我的往返地理编码中间查找服务器免受其他人使用它等等。但是在这一点上,我只是感到困惑。
更新#2:2016年6月16日 同样,这一切都不清楚。我提交了一份feature request to the Google GeoCode team,要求对文档进行澄清更新,以解决使用浏览器API密钥进行地理编码查找的问题。
答案 0 :(得分:3)
The documentation for the Geocoding Web Service州:
标准API用户:如果您在标准套餐下使用API,则必须使用在您选择的项目中设置的服务器密钥(一种API密钥)。
错误消息表明您使用的是浏览器密钥。