我创建了 API 密钥来启用地理编码 API,地图 JavaScript API和地点 API使用 Cloud NAT IP 限制 IP。我的 API 密钥从 GCP(Google Kubernetes Engine/GKE)上的 Kubernetes 访问,当 im 测试 curl 响应请求时,请求被拒绝,因为响应来自 IPV6 地址。
curl --location --request GET 'https://maps.googleapis.com/maps/api/place/autocomplete/json?input=Wonogiri&types=&key=MY-API-KEY'
{
"error_message" : "This IP, site or mobile application is not authorized to use this API key. Request received from IP address IPV6_ADDRESS, with empty referer",
"predictions" : [],
"status" : "REQUEST_DENIED"
}
但是我 curl 到 ifconfig.me 得到的响应是 IP Cloud NAT (34.87.xxx.xx)。我很困惑。
答案1
根据 API 的响应,我怀疑您必须设置 http referrer 标头。
curl --referer Referer_URL \
--location \
--request GET \
'https://maps.googleapis.com/maps/api/place/autocomplete/json?input=Wonogiri&types=&key=MY-API-KEY'
我会检查限制,因为您可能启用了“网站”限制,因此需要引荐来源。
如果有 IP 限制,请确保将 IP 添加到列表中并保存 api 密钥。它应该可以立即工作。
该 IP 地址应该是集群中节点的外部 IP 地址。