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

如何从自有网站正常访问Google My Map标记的托管图片?

解决Google My Maps托管图片403访问禁止问题

问题背景

导入Google My Maps创建的自定义地图时,地图本身可正常使用,但标记点附带的图片无法访问,所有请求均返回403错误。这类图片的URL格式为:
https://doc-xx-b8-mymaps.googleusercontent.com/untrusted/hostedimage/...

已尝试的无效方案

  • PHP下载图片自行托管:使用file_get_contents和cURL尝试下载,均返回403错误。代码示例:

    $download = file_get_contents($image['src']);
    $temp = 'image';
    file_put_contents($temp, $download);
    $file_data = getimagesize($temp);
    $image_data = $file_data['mime'];
    $image_type = explode('/', $image_data);
    $extension = $image_type[1];
    $filename = uniqid().'.'.$extension;
    rename($temp, $filename);
    
  • 直接作为img标签src使用:将原URL设为img的src属性,控制台显示403拦截;添加referrerpolicy="no-referrer"后仍无效。同时发现原URL会被自动重定向为:
    https://www.google.com/maps/d/refreshhostedimage?image=原图片URL
    请求详情显示响应头包含严格的缓存控制、CSP策略,明确返回403 Forbidden。

核心原因

Google My Maps的托管图片受权限上下文保护,仅允许在Google Maps的官方页面环境中访问,外部直接请求或下载会被防盗链机制拦截,并非单纯的请求头缺失问题。

可行解决方案

  1. 手动导出图片本地托管
    打开你的Google My Map,逐个保存标记点的图片到本地服务器,替换导入后的地图图片URL为本地地址。适合标记点数量较少的场景。

  2. 使用Google Maps Embed API嵌入地图
    若需保留地图交互性,直接通过Embed API嵌入整个地图,标记点图片会在Google合法上下文内加载,不会触发403。示例代码:

    <iframe
      width="600"
      height="450"
      style="border:0"
      loading="lazy"
      allowfullscreen
      referrerpolicy="no-referrer-when-downgrade"
      src="https://www.google.com/maps/embed/v1/view?key=你的API密钥&center=纬度,经度&zoom=10&maptype=roadmap">
    </iframe>
    

    需提前申请Google Maps API密钥,并启用Embed API权限。

  3. 检查地图共享权限
    确认你的Google My Map已设置为公开共享(或共享给指定用户),私有地图的外部请求会被直接拦截。开放权限后,部分场景下图片可正常加载。

无效原因说明

  • untrusted/hostedimage路径下的资源会验证请求的来源上下文、会话Cookie等信息,单纯修改请求头或referrerpolicy无法绕过权限校验。
  • refreshhostedimage是Google内部接口,外部调用缺少合法会话凭证,必然被拒绝。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 07:27:48