You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google Maps Geocoding API域名限制后报403错误(Python脚本调用异常)

解决Google Maps API密钥限制后服务器端地理编码请求403的问题

我之前也碰到过几乎一模一样的情况,核心问题其实是HTTP引用(Referer)限制只对浏览器发起的请求生效,而你的Python脚本是在服务器后台运行的,调用Geocoding API时不会带上符合你设置的Referer头(甚至可能根本没有这个头),所以被Google的安全策略拦截,返回了403错误。

具体原因拆解

  • 你设置的https://website.com/*和https://www.website.com/*这类HTTP引用限制,是专门约束浏览器端前端代码的——浏览器在发起请求时会自动带上当前页面的Referer,匹配上规则就允许访问,所以你的JavaScript地图和自动完成功能能正常工作。
  • 但Python脚本是在服务器后台运行的,它发起的Geocoding API请求不会有浏览器那样的Referer头,自然匹配不上你设置的规则,直接被拒绝了。

可行的解决方案

1. 为API密钥添加IP地址限制(推荐)

因为你的Python脚本是在自己的服务器上运行的,服务器有固定的公网IP地址。你可以:

  • 登录Google Cloud控制台,找到你的API密钥设置页面
  • 在「应用限制」里,把原来的「HTTP引用(网站)」切换成(或者补充)「IP地址(服务器端)」
  • 添加你的服务器公网IP地址(如果是云服务器,比如AWS、阿里云,直接找实例的公网IP即可)
  • 保存设置后,服务器端的Python脚本请求就能正常通过了

2. 拆分密钥策略(更安全)

如果你不想修改现有密钥的限制,也可以:

  • 专门为服务器端的地理编码请求创建一个新的API密钥,只给这个密钥设置IP限制,专门用于服务器端调用
  • 保留原来的密钥给前端使用,这样前端和服务器端的请求互不影响,安全性也更高

额外注意事项

  • 检查你设置的HTTP引用格式:正确的格式应该是https://website.com/*(不带空格),虽然你说前端功能正常,但这个细节还是要确认下
  • 确保你的Python脚本调用Geocoding API时,没有错误地带上了不符合规则的Referer头(如果有的话,去掉它即可)

内容的提问来源于stack exchange,提问作者Luke D

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:48:57