在google maps中打开KMZ文件,但仅针对PHP中的受信任(经过身份验证)用户


Open a KMZ file in google maps, but only for trusted (authenticated) users in PHP

我知道这是可能的,在浏览器中打开一个KMZ或KML文件与谷歌地图与这样的url:

https://maps.google.it/maps?q=http://myserver.com/mymap.kmz

但是我想让只有经过身份验证的用户打开kmz。为此,我用.htaccess保护了我的kmz文件夹,我编写了一个php页面来检查用户是否登录,只有在检查通过后,它才返回kmz文件:

...
if(isset($_SESSION['trusted'])) {
    if(isset($_GET['map']) && $_GET['map']!="") {
        $map = $_GET['map'];
        readfile("./kmz/$map");
}
...
所以,现在我的url是:
https://maps.google.it/maps?q=http://myserver.com/requestkmz.php?map=mymap.kmz

问题似乎是php用readfile返回的文件与文件系统中的原始文件不相同。我需要放置标题或指定编码吗?


我已经在php文件中添加了一个头文件,但是我得到了相同的结果:生成的KMZ不像原始的那样有效。这是在readfile行之前添加的头文件:

header("Cache-Control: no-cache, no-store, must-revalidate"); 
header('Content-Type: application/vnd.google-earth.kmz');
header("Content-Disposition: inline");
header("Content-Description: KMZ data intended for Google Earth");

对kmz文件的请求来自google,而不是来自用户(当您查看console->network时,您将看到没有任何对kmz文件的请求)。

所以唯一需要授权的"用户"是google。

意味着:这是不可能的(除非你通过KMZ-URL传递认证用户所需的凭据,但这当然是不安全的)